docs: NUMPOL-CARRIER-1 — the S5 numeric_policy carrier gets an owning queue row - #624
Conversation
… queue row The standing decision the substrate view flagged: the generalized below-Graph-IR numeric_policy carrier (Decision #32) had four mandating consumers (CAKE, game-theory fusion-as-correctness, PDE info_loss retirement, AD-JET-IR-1) and no owning row. It is now integrated-plan queue row 3b — carrier design + fail-closed boundary verifier, with the landed W1.1 fragment accumulator as the worked reference, FORGE §1.3's measured realizability verdict as the acceptance target, and explicit parallel-safety with Orders 3/5. CORE_SUBSTRATE_VIEW's two 'no owning row' flags now point at the row. Ordering note: numbered 3b to avoid renumbering Orders 4-14, which are referenced throughout the plan and the audit prose. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 60295acf61
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ODOs, bump freshness P1 — the row introduces a shared Schedule→Tile contract, so AGENTS.md L81-85 applies to a plan row exactly as it does to code. New sync key NUMPOL-CARRIER-1-2026-08-24 in all four backend queues, each with an architecture-specific outcome rather than a copied sentence. All four are "follow-up required" — the row is newly owned and nothing is implemented yet, so claiming parity anywhere would be false — but the obligations differ: ROCm owns the worked reference (the W1.1 fragment accumulator, which must be RE-EXPRESSED as an instance, not duplicated, #31); x86 has no carrier at all today and is both consumer and regression gate; NVIDIA must sequence behind its open W1.1 typed-fragment producers or the two collide at the same seam; Apple must not require a third policy representation across its Python-synthesizer / C++-pipeline seam. P2 — the resolved ownership TODOs are retired together with the row that resolved them: CORE_SUBSTRATE_VIEW's "four flagged inputs" paragraph now records S5 as closed (three remain open) so it cannot be re-proposed, and AUTODIFF_NEXTGEN_PLAN's two references (§2.3 key table and the AD-JET-IR-1 gate table) point at queue row 3b instead of "no owning row". The one remaining "no owning row" in that plan is the unrelated vmap/batching_rule item and is deliberately left. P2 — CORE_SUBSTRATE_VIEW frontmatter bumped 2026-08-15 → 2026-08-24 and the owning freshness view regenerated: exactly one line changes (that doc's row, 9 days stale → 0), no date churn elsewhere. test_audit_docs.py green; generated docs in sync. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
All three findings verified and fixed in eac5a28. P1 (four-backend assessment) — correct, and the point generalizes: AGENTS.md L81-85 applies to a plan row that introduces a shared contract exactly as it does to code. New sync key
P2 (resolved TODOs) — fixed together with the row that resolved them: P2 (freshness) — confirmed: frontmatter bumped 2026-08-15 → 2026-08-24 and the owning freshness view regenerated. The diff is exactly one line (that doc's row, 9 days stale → 0) with no date churn elsewhere.
🤖 Generated with Claude Code |
…an identity, record cross-backend P1 (overlap erased) — CONFIRMED and worse than reported. A 12-action MegaMoE plan inferred all 66 edges of the complete order, so R3 would estimate and prune overlap plans as sequential pipelines. Measured three distinct over-conservatisms in the SHARED inference, each fixed with the sound rule: 1. ordered collectives serialized against every surrounding op. They constrain the order OF COLLECTIVES (all ranks issue them in the same relative order), not unrelated local work — data through a collective is still ordered by SSA/alias/memory edges. Now collective-to- collective only. 2. a registered op declaring `aliasing="none"` had its declaration discarded whenever it was effectful, so every collective result was assumed to alias hidden state and `unknown_alias_fact` became an all-pairs barrier. A declared fact now has its consumer (#29/#30). 3. `has_memory_dependence` returned top for ANY effectful pair. A registered pure op touches no hidden state, so with a disjoint alias set it cannot depend through memory; two pure ops sharing a read-only operand (the weights every expert reads) likewise get no alias edge. Result: 66 → 36 edges, still covering every hand-oracle edge, with the extras now collective-ordering only. `combine:0 -> compute:1` and `compute:0 -> compute:1` are gone; `dispatch:0 -> dispatch:1` and `combine:0 -> combine:1` remain. An existing test asserted the old blanket rule for collectives; it is deliberately replaced by an explicit ordering test (positive: collectives keep relative order; negative: independent local work floats) plus an alias-gated memory-dependence test. The other three barrier classes keep their all-pairs assertion unchanged. P2 (digest identity) — CONFIRMED: action ids and graph shape are functions of the chunk COUNT, so plans differing in capacities/buffers/token ranges/in-flight limit content-addressed identically. The schedule object now binds `plan.artifact_digest`, which already addresses exactly those fields; `candidate_id` stays the plan id so pruning keys are unchanged. P1 (cross-backend) — sync key SO3-INFER-EDGES-2026-08-24 in all four queues: rocm/x86 parity validated (analysis is prune/rank-only; no generated code or numerics change), nvidia/apple not-applicable-today with the inherited-on-adoption reason. Also resolves the merge conflict with #624 by keeping both queue rows. Gates: composition-cost + graph-dataflow + MegaMoE suites 71 pass; mypy 0; ruff clean; generated docs in sync. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Closes the standing decision from the compiler-actions review: the S5 generalized
numeric_policycarrier (Decision #32's below-Graph-IR carrier) had four mandating consumers — CAKE (the decision's original derivation), game-theory §6 (fusion is a correctness feature), PDE §III.4 (interimtessera.info_lossrecords), and AD-JET-IR-1 (coefficient/cotangent policy) — and no owning queue row.It is now integrated-plan queue row 3b (NUMPOL-CARRIER-1):
!tile.fragment<…, acc, …>route is the worked reference to generalize, not duplicate (Apple GPU: Gumbel-max inference sampler (#18-safe, reproducible) #31).info_lossrecords retired; FORGE §1.3's measured fused-epilogue realizability verdict (913× → 1.1× → 1.0× as a function of accum × state dtype) decided by the carried policy.CORE_SUBSTRATE_VIEW's two "no owning row" flags now point at the row. Docs-only;test_audit_docs.pygreen.🤖 Generated with Claude Code