Skip to content

docs: NUMPOL-CARRIER-1 — the S5 numeric_policy carrier gets an owning queue row - #624

Merged
gstoner merged 2 commits into
mainfrom
agent/s5-carrier-ownership
Aug 25, 2026
Merged

gstoner merged 2 commits into
mainfrom
agent/s5-carrier-ownership

Conversation

@gstoner

@gstoner gstoner commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Closes the standing decision from the compiler-actions review: the S5 generalized numeric_policy carrier (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 (interim tessera.info_loss records), and AD-JET-IR-1 (coefficient/cotangent policy) — and no owning queue row.

It is now integrated-plan queue row 3b (NUMPOL-CARRIER-1):

  • Deliverable: one carrier design for storage/accumulator/math-mode surviving Schedule + Tile IR beyond MMA fragments (pointwise/reduction/butterfly chains), plus the docs: scope GPU-resident activations / persistent device-handle model #32 boundary verifier that fails on silent loss. The landed W1.1 !tile.fragment<…, acc, …> route is the worked reference to generalize, not duplicate (Apple GPU: Gumbel-max inference sampler (#18-safe, reproducible) #31).
  • Acceptance: lit-verified round-trip per boundary crossing; dropped policy fails closed with a named diagnostic (#21a); the W1.1 fragment path re-expressed as an instance with bit-identical existing outputs; PDE's interim info_loss records 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.
  • Parallelism: explicitly safe alongside Orders 3 and 5 (orthogonal IR-carrier work).
  • Numbered 3b to avoid renumbering Orders 4–14, which are referenced throughout the plan and audit prose.

CORE_SUBSTRATE_VIEW's two "no owning row" flags now point at the row. Docs-only; test_audit_docs.py green.

🤖 Generated with Claude Code

… 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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread docs/audit/compiler/INTEGRATED_COMPILER_PLAN.md
Comment thread docs/audit/compiler/CORE_SUBSTRATE_VIEW.md
Comment thread docs/audit/compiler/CORE_SUBSTRATE_VIEW.md
…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>
@gstoner

gstoner commented Aug 25, 2026

Copy link
Copy Markdown
Owner Author

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 NUMPOL-CARRIER-1-2026-08-24 in all four queues, each with an architecture-specific outcome rather than a copied sentence. All four are honestly follow-up required — the row is newly owned and nothing is implemented, so claiming parity anywhere would be false — but the obligations genuinely differ:

  • ROCm owns the worked reference (the W1.1 !tile.fragment<…, acc, …> accumulator). The generalization must re-express it as an instance, not add a second implementation (Apple GPU: Gumbel-max inference sampler (#18-safe, reproducible) #31), with bit-identical gfx1151 output as the bar.
  • x86 has no carrier today — this is Decision docs: scope GPU-resident activations / persistent device-handle model #32's original defect in its purest form (the accumulator contract stated at Graph IR is gone by the time AVX-512 picks an instruction). It's both consumer and regression gate.
  • NVIDIA must sequence behind its open W1.1 typed-fragment producers or the two collide at the same seam; CAKE is the NVIDIA-facing consumer, so barrier/TCGen05 paths come first.
  • Apple must be designed not to require a third policy representation across its Python-synthesizer / C++-pipeline seam.

P2 (resolved TODOs) — fixed together with the row that resolved them: CORE_SUBSTRATE_VIEW's "four flagged inputs" paragraph now records S5 as closed with an explicit "do not re-propose" (three remain open), and AUTODIFF_NEXTGEN_PLAN's two references — the §2.3 key table and the AD-JET-IR-1 gate table — point at queue row 3b. The one surviving "no owning row" in that plan is the unrelated vmap/batching_rule item, deliberately left.

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.

test_audit_docs.py green; generated docs in sync.

🤖 Generated with Claude Code

@gstoner
gstoner merged commit e634995 into main Aug 25, 2026
17 checks passed
gstoner pushed a commit that referenced this pull request Aug 25, 2026
…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>
@gstoner
gstoner deleted the agent/s5-carrier-ownership branch August 25, 2026 12:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant