Repository navigation
Conversation
…y decision tree Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6br9PL4SDeVS1XpezKJ
…idates over existing IR Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… definitions with the code and #1200 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…earlier modeling section Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…les per pass and stage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… pruning caps Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lRequirement.consumer_{timing,schedule}
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…presents Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l interfaces; satisfies_logical Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…meters, window_layout}, LogicalRequirement {parameter_floor}, r^phys = f(p^phys_c); at-a-glance tables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Comparing this doc with PR 1213 (memo representation proposal). Four places where the models differ. 1. Accuracy
2. Sketch family
Also: the §2 decision tree shows 3. One operator per candidate
4. Producer variants: stored vs. derived
|
|
Yeah it should be under MemoGroup. |
For this, it has the possibility to not be each operand gets .005.
Yeah, agree, the sketch algorithm should be the candidate dimension. But it is like this PR's way because later if we want to model each operator as one group to avoid duplicated nodes in the plans, and being more flexible about choices, it may be easier to build one group for a sketch algorithm.
I thought per operator is its own group will give us more flexibility. Didn't quite get the example; it seems not to be comparing the same aggregation?
I don't see there is a difference. The difference in representation only comes from storing the producer vs storing the consumer in MemoGroup. |
…functions) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sure.
It's not 'PhysicalCandidateId', it's The name of a physical candidate that Stage 2 pruned. It names the pruned candidate by its content instead: They exist for DAG viewer tool to display.
Context comes from these: How often a candidate runs, and so what it costs, depends on its lifetime ℓ:
Row functions: one per constraint family, as see in the overleaf table. We should just call them constraints. |
Both use the same operator enum
Example: G3 = p95 of the KLL state. As an Why a candidate cannot reuse the group's
Two simplifications this question points to, proposed (not yet decided):
|
…red, grid width from the window layout, per-input validity caps, metric rule, (K) encoding, (J) definitions, (L)/budgets out of scope Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…unds, not cost Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Sketch state) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…latency ignored for now Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…ends (no refresh interval) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
|
…anchored at phase 0
A OneEvaluation result belongs to one evaluation context and runs on that
context's schedule, chosen by Stage 3 through x_{κ,v}. Every tumbling grid
is anchored at the epoch; a phase is absorbed by the width, whose candidates
come from the gcd closure of ranges, steps and phases. A consumer in κ reads
a windowed chain iff w | I_κ and w | φ_κ (delivers_on). The only invalid
combination left is (IngestionTime, OneEvaluation).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…uation context per schedule A sketch build's θ must be in its family's list; a requirement's floor is any value of the parameter type (the weakest θ with ε ≤ cap, or a direct need such as heap_size ≥ k). Heap variants take heap sizes from the 1-2-5 series 10 … 10 000; KMV and UnivMon distinct-count lists stop at ε = 0.01. satisfies_physical takes producer and consumer only. Context::Evaluation is keyed by the evaluation schedule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
Done:
Kept as
Yes. Renamed to
Agreed. It matches
Agreed. The floor comes from the accuracy needed at that input; for a top-k reader, heap_size ≥ k is part of the same requirement.
Agreed on the meaning, without
Agreed.
Agreed:
Easy (the strictest of several floors of one family is their componentwise maximum), but not added now, because nothing would call it:
It becomes useful with requirement-driven (top-down) enumeration as in #1213; we add
Agreed: |
LogicalPropertiesError, PhysicalPropertiesError, LogicalRequirements (parameter_floor_for_required_accuracy), producer_satisfies_logical_requirements, producer_satisfies_physical_requirements, StorageMedium, ExecutionContext and ExecutionContextId; PhysicalCandidate / PhysicalCandidateKey fields logical_candidate_id and physical_properties; edge fields producer_candidate_id and consumer_candidate_id; PhysicalASAPMemoCandidates fields logical_candidates and physical_candidates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…1228) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…ne-off queries supported
An evaluation context is Evaluation { recurrence, range_evaluation },
deduplicated by equality. delivers_on takes the context: w divides the
evaluation grid of FixedIntervalAt (interval, step, phase), every
Scheduled time, or a OneTime query's time; never when the times are not
known. ρ_κ reuses execution_demand's evaluation counting. EvaluationSchedule
is deleted.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
find_or_add_group returns the node rules' SchemaDerivationError; add_candidate checks the candidate's expression by the same rules and requires the group's output schema and kind (CandidateError). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
MemoGroup holds expression, schema and result kind (no logical node or child list); Memo's groups are private behind groups(), added only through find_or_add_group (hash-consing on the expression), and Stage 0 adds each query with add_query. Appendix A reads memo.groups(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…inition over group ids A memo group is its expression and its GroupProperties (schema, result kind, summary coverage, shareable_when_equal), derived once from its input groups' expressions and properties by the node rules, never from node trees. A group's summary coverage has a SummaryDefinition: the residual links over group ids. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…Input; coverage only in the memo Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…roup examples Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…fine fused groups Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
…ary coverage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1M6bq8xVaGKyinf4ohK6q
Why
The formulation refactor (#1207) changes the memo's groups, candidates, properties and requirements across several PRs, but no single page defines them. This doc fixes the definitions before more code changes, so that the PRs and the paper use one model.
What
Adds$(q, \mathcal T_q, A_q)$ , memo group, candidate $v = (e_v, p_v)$ , property requirement $r_{c,i}$ , $\succeq$ , $P_{c,i}$ , $\mathcal E$ , $\alpha$ ), and marks each #1207 extension.
docs/design_docs/concepts/memo-groups-properties-requirements.md, linked from the concepts index. It uses the optimization problem formulation's terms throughout (workloadNew abstractions (approved by the user 2026-11-05)
ErrorPropagation { factor_per_input, validity_cap }anderror_propagation(consumer)(section 3): each consumer's propagation factors and validity cap, the source ofHow
The definitions follow the formulation in #1207, #1203 and #1200: properties are products of dimensions, ℓ ≠ None is "materialized", and accuracy is checked at the query root (row (K)), not per edge. Every struct is labeled as code today (with its path) or as the target of #1200 / #1203. The group's expression is the existing IR; no new identity type.
Before / After
Verification
Docs only. Mermaid syntax checked by eye; links checked.
🤖 Generated with Claude Code
https://claude.ai/code/session_01K1M6br9PL4SDeVS1XpezKJ