Skip to content

Refactor provider implementations into separate modules - #88

Merged
briansrls merged 9 commits into
mainfrom
claude/blue-team-sdlc-review-SaC9P
Feb 28, 2026
Merged

briansrls merged 9 commits into
mainfrom
claude/blue-team-sdlc-review-SaC9P

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Summary

This PR reorganizes the SDLC provider implementations (ClaimStore, OutcomeLedger, SignalStore, ArtifactStore) from inline service definitions in profile files into dedicated, separately-compiled modules. This improves modularity, testability, and maintainability of the provider layer.

Key Changes

  • Extracted provider modules: Created new dedicated .dag files for each provider implementation:

    • dsl/services/sdlc/providers/gcs_claim_store.dag
    • dsl/services/sdlc/providers/gcs_outcome_ledger.dag
    • dsl/services/sdlc/providers/pubsub_signal_store.dag
    • dsl/services/sdlc/providers/gcs_artifact_store.dag
    • dsl/services/sdlc/providers/file_claim_store.dag
    • dsl/services/sdlc/providers/file_outcome_ledger.dag
    • dsl/services/sdlc/providers/file_signal_store.dag
    • dsl/services/sdlc/providers/inline_artifact_store.dag
  • Cleaned up profile files: Removed inline service definitions from dsl/profiles/local.dag and dsl/profiles/cloud_run.dag, replacing them with import references to the new provider modules

  • Added provider configuration: Enhanced GCS providers with explicit endpoint and auth configuration fields for better REST transport binding

  • Removed obsolete integration tests: Deleted sdlc_integration.rs, sdlc_handlers.rs, sdlc_worker.rs, and sdlc_scenario.rs test files that were testing compilation and DryRun execution — these are now covered by the testgen infrastructure

  • Updated test discovery: Modified dag_test_discovery.rs to use callable_count instead of func_count, reflecting support for multiple callable item types (func, fn, pattern, pipeline)

  • Added contract testing design: Introduced docs/design/contract-testing.md documenting a three-phase approach to verify provider behavior against interface contracts

  • Fixed variable references: Corrected parameter passing in dsl/infra/sdlc/deploy.dag (e.g., project → project_id)

  • Updated test fixtures: Adjusted expected node counts in workflow fixture JSON files to reflect the new module structure

Implementation Details

Each provider module now:

  • Declares its own service implementation with full configuration
  • Includes inline test blocks for provider-specific behavior
  • Can be independently compiled and tested
  • Is imported by profiles that need it, reducing profile file complexity

The refactoring maintains backward compatibility — profiles still bind interfaces to the same concrete implementations, just via module imports rather than inline definitions.

https://claude.ai/code/session_01PmLvshGhZGoEvfDdiLawFj

…ign contract testing

Track A — Testgen discovery fix:
- Replace func_count with callable_count in dag_test_discovery.rs, broadening
  the filter from FuncDef-only to all 4 callable item types (FnDef, FuncDef,
  PatternDef, PipelineDef), mirroring module_has_callable_items() canonical
  predicate. 59 modules now discovered (up from ~29), 9,710 test fns generated.
- Delete 493 lines of redundant hand-written tests (sdlc_handlers, sdlc_worker,
  sdlc_integration, sdlc_scenario) that compensated for invisible modules.
- Audit confirms all other FuncDef-specific filters are correct for their use.

Track B — Contract testing design:
- Add docs/design/contract-testing.md: problem statement, ContractObligation IR,
  parameterized test generation, provider compliance wiring.
- Add CT-1 through CT-4 task entries in tasks.md.

Track C — Provider completion:
- Add transport blocks to gcs_claim_store.dag and gcs_outcome_ledger.dag.
- Create 4 new provider files: file_signal_store.dag, pubsub_signal_store.dag,
  gcs_artifact_store.dag, inline_artifact_store.dag (with test blocks).
- Update profile bindings in sdlc.dag for local + cloud_run profiles.
- Extract inline service definitions from local.dag and cloud_run.dag to
  dedicated provider files.
- Delete dead code stubs from pipelines/sdlc.dag.
- Fix project -> project_id variable naming in deploy.dag.

Snapshot updates:
- Update obligation golden fixtures (w_auth, w_contract_aws, w_contract_azure)
  to reflect service definitions moving from profile files to provider files.
- Update corpus inventory and module graph snapshots for 4 new provider files.

https://claude.ai/code/session_01PmLvshGhZGoEvfDdiLawFj

@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: 05b91c6a67

ℹ️ 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".

conflict: Bool
lease_generation: Int
}
transport rest { method: PUT, path: "/upload/storage/v1/b/\{bucket\}/o?uploadType=media&name=claims/\{issue_id\}/\{stage\}.json" }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Bind cloud bucket config for ClaimStore transport

This new REST template introduces a required bucket input (.../b/{bucket}/...), but the active cloud_run profile still binds ClaimStore without any config values (dsl/profiles/sdlc.dag), so no value is wired into the prepare node for this placeholder. In GenericRestPrepareOp, missing non-default inputs trigger the has_missing_required fast-path and the request is marked Skipped, which means acquire/heartbeat/release can silently avoid calling GCS in cloud-run executions.

Useful? React with 👍 / 👎.

updated: Bool
previous: StageOutcome?
}
transport rest { method: PUT, path: "/upload/storage/v1/b/\{bucket\}/o?uploadType=media&name=outcomes/\{run_key\}/\{stage\}.json" }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Bind cloud bucket config for OutcomeLedger transport

Like ClaimStore, this new REST path now depends on bucket (.../b/{bucket}/...), but cloud_run still binds OutcomeLedger without providing config in dsl/profiles/sdlc.dag. Because the operation inputs do not define bucket, the prepare step sees a missing required field and returns Skipped (via GenericRestPrepareOp), so upsert/get/list_by_issue can be skipped instead of hitting the ledger backend under the cloud-run profile.

Useful? React with 👍 / 👎.

briansrls and others added 8 commits February 27, 2026 14:06
Resolved 4 conflicts:
- s2_credential_chain_gcp.json: take our readonly_targets:3 + main's total_obligations:82
- daglang-lower/src/lib.rs: take main's `mod tests;` (RT32 extraction), update readonly assertion in tests.rs
- resolve_service.rs: take main's `requires_auth = true` pattern (postmortem hardening)
- tasks.md: take main's structure, add RT49-RT57 (contract testing & derivation queue)

Snapshot fixes: workflows.makegen 2→5, add std.virtual_io:1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…eletion

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@briansrls
briansrls merged commit d01b76d into main Feb 28, 2026
1 check passed
briansrls added a commit that referenced this pull request May 7, 2026
…rker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 7, 2026
…briefs (#2117)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 7, 2026
… gates #88-#91)

Slice A receipt for T-Lens-Application-Surface: lands the parametric
substrate carriers from `docs/design-lens-application-surface.md` §2.

Refresh the parse-corpus manifest for the new file and advance gates
#88-#91 to CONSUMER_LANDED in `docs/r3-program-plan.md` §1.8.

Per-lens `EnforceableLens` / `LensEnforcement` data instances + fold-pass
execution land in Slice B (#1952 / #1953 / #1954) — they consume this
landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 7, 2026
…reate) (#2158)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 7, 2026
* WIP: Substrate T-LAS Slice A: 88-91 carrier + routing landings

* WIP: Substrate T-LAS Slice A: 88-91 carrier + routing landings

* feat(v3.std): land lens_application substrate carriers (T-LAS Slice A gates #88-#91)

Slice A receipt for T-Lens-Application-Surface: lands the parametric
substrate carriers from `docs/design-lens-application-surface.md` §2.

Refresh the parse-corpus manifest for the new file and advance gates
#88-#91 to CONSUMER_LANDED in `docs/r3-program-plan.md` §1.8.

Per-lens `EnforceableLens` / `LensEnforcement` data instances + fold-pass
execution land in Slice B (#1952 / #1953 / #1954) — they consume this
landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: Substrate T-LAS Slice A: 88-91 carrier + routing landings

* WIP: Substrate T-LAS Slice A: 88-91 carrier + routing landings

* WIP: Substrate T-LAS Slice A: 88-91 carrier + routing landings

* docs(v3.std): clarify EnforceableLens parser-uniqueness invariant is tracked-not-yet-enforced

Per codex BLOCKING on PR #2145 (sha a74a2b6): the EnforceableLens
substrate carrier comment claimed a live mechanical guarantee
("PARSER-LEVEL UNIQUENESS INVARIANT: the parser enforces ...") that
this PR does not implement. Reframe to name the design intent + status:
the carrier shape is landed, the parser check is tracked debt deferred
to a follow-up slice, and duplicate declarations are convention-only at
this commit. Design-lock authority for the full invariant remains the
design doc §2 paragraph.

Refresh parse-corpus manifest hash for the comment change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(v3.std): pin EnforceableLens parser-uniqueness dissolution routing to #2162

Per codex BLOCKING on PR #2145 (sha b6e3839): the prior comment named
the deferred parser pass as "Slice B (or a follow-up Substrate slice)"
— too vague to satisfy INVARIANTS.md P5's specific-retirement-path
discipline for tracked debt at substrate-authority level.

Filed #2162 as the single retirement path for the tracked
parser check + behavior-driven duplicate-declarations Diagnostic test.
Reframed the comment to name #2162 as the dissolution routing.

Refresh parse-corpus manifest hash for the comment change; regen
bootstrap snapshots so the substrate file matches.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…nded + Q-Cost-Composition-Layering ε) (#2181)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…ined as context) (#2193)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…precedent does NOT apply) (#2197)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at #828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6d:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…per Q6 RATIFIED) (#2209)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at #828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6d:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas — DRAFT (canvas-tier P1 procedure per Q6 RATIFIED)

Director Q6 RATIFIED canvas-tier-required at #828 c#4403163639
for PerfWithinBaseline TestPredicate variant authoring. Three substantive
substrate-shape questions resolved:

Q1 baseline shape: (a) literal-Int rejected as strict-mirror-of-CostBounded
defeats semantic load; (b) DeclarationRef-to-stored-data composes
LensOutputEquals + data X: SymbolicCost precedent at HEAD; (c) runtime-
fixture-injection over-authors. Mgr lean (b).

Q2 ComparisonOp composition: (i) reuse existing ComparisonOp via test-
runner-side resolution matches LensOutputEquals path; (ii) new relative-
op-set introduces parallel-representation debt. Mgr lean (i).

Q3 baseline-storage scope: (α) in-scope slice authors example data; (β)
out-of-scope variant-only slice + PB consumer authors baseline data
matches existing layering. Mgr lean (β).

Combined Mgr lean: Q1(b) + Q2(i) + Q3(β) — variant authored as
compositional extension; baseline-storage is PB consumer-tier work.

Cross-Mgr: PB Mgr #2138 worker (crisp-swift-433) holds dispatch on #2204
land; T-Tier3-Dissolution #2085 R-4 prereq encoded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…g-shape original) (#2210)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at #828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6d:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas — DRAFT (canvas-tier P1 procedure per Q6 RATIFIED)

Director Q6 RATIFIED canvas-tier-required at #828 c#4403163639
for PerfWithinBaseline TestPredicate variant authoring. Three substantive
substrate-shape questions resolved:

Q1 baseline shape: (a) literal-Int rejected as strict-mirror-of-CostBounded
defeats semantic load; (b) DeclarationRef-to-stored-data composes
LensOutputEquals + data X: SymbolicCost precedent at HEAD; (c) runtime-
fixture-injection over-authors. Mgr lean (b).

Q2 ComparisonOp composition: (i) reuse existing ComparisonOp via test-
runner-side resolution matches LensOutputEquals path; (ii) new relative-
op-set introduces parallel-representation debt. Mgr lean (i).

Q3 baseline-storage scope: (α) in-scope slice authors example data; (β)
out-of-scope variant-only slice + PB consumer authors baseline data
matches existing layering. Mgr lean (β).

Combined Mgr lean: Q1(b) + Q2(i) + Q3(β) — variant authored as
compositional extension; baseline-storage is PB consumer-tier work.

Cross-Mgr: PB Mgr #2138 worker (crisp-swift-433) holds dispatch on #2204
land; T-Tier3-Dissolution #2085 R-4 prereq encoded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas REVISED (supersedes wrong-shape original)

Director disposition at #828 c#4403265220 authorized
supersession after BLOCKING at PR #2209 c#4403246233 verified VALID:
original canvas conflated symbolic SymbolicCost (cost-lens substrate)
with wall-clock measured median/p99 baseline (T-Tier3 perf gate
substrate per docs/r3-structure.md:225 + :461 Director-locked 2026-04-28).

Revised canvas frames as two-path ratification:
- P1 author full perf-budget substrate in-R3 (multi-slice; pattern-5
  genuinely-novel substrate-fact-introduction)
- P2 explicitly post-R3 per Director-locked recommendation (zero in-R3
  effort; structural close per r3-structure.md:461 'R3 deliverable is
  structural close; perf is downstream')

Mgr lean: P2 — Director-locked recommendation explicit; trigger-
condition ('someone authors perf-budget claim with concrete numbers
and tooling') not met; R3 horizon constraint argues against multi-
slice perf-budget substrate adding to 5-orthogonal-dependency picture.

Original canvas at q-perf-within-baseline-canvas.md retained with
SUPERSEDED-BY header per durable-decision-record discipline.

5th discipline-failure of 2026-05-08 cycle: substrate-grep verified
substrate-precedent but missed consumer-side requirement at canonical
authority doc; Director self-flagged symmetric two-axis verification
gap; canvas-finding-taxonomy needs precondition 'consumer-side
requirement grep-verified at canonical authority doc'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas-revised — correct trigger-condition framing per Director c#4403297623

Director caught second-axis grep failure on revised canvas: my P2
reasoning #1 ("path-trigger condition for P1 is not met") was
structurally wrong. Existing tooling at HEAD substantially meets the
Director-locked 2026-04-28 trigger-condition ("someone authors the
perf-budget claim with concrete numbers and tooling"):

- docs/briefs/r3-pb-tier3-perf-budget-worker.md
- docs/audit/c1-tier3-perf-budget-readiness-matrix.md
- src/v3/compiler/benches/tier3_mirror_perf.rs
- docs/audit/c1-tier3-baseline-capture-procedure.md
- docs/audit/c1-r3-canonical-bench-host-decision-matrix.md

Plus thresholds (≤2× median, ≤5× p99) + capture discipline (N=3 min,
N=5 preferred) + canonical bench host option matrix.

P1 is bridging existing tooling to substrate (compositional-extension),
NOT multi-slice greenfield genuinely-novel pattern-5 as originally
framed. Smaller scope than canvas-finding-taxonomy pattern 5 implies.

Path-call genuinely depends on PB Mgr's R-3 (canonical CI bench host)
+ R-7 (tier3_baseline.json baseline-capture path) decisions per their
audit response at c#4403059897. Path-call DEFERRED to cross-Mgr
coordination outcome with PB Mgr (#2074); Substrate Mgr surfaces with
corrected framing this turn.

Sixth discipline-failure of cycle (mine, second-axis grep gap on
existing-tooling state); same-class as Director's first-axis grep gap
on consumer-side requirement at the prior turn. Memorialized as
two-axis verification discipline anchor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at #828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6d:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas — DRAFT (canvas-tier P1 procedure per Q6 RATIFIED)

Director Q6 RATIFIED canvas-tier-required at #828 c#4403163639
for PerfWithinBaseline TestPredicate variant authoring. Three substantive
substrate-shape questions resolved:

Q1 baseline shape: (a) literal-Int rejected as strict-mirror-of-CostBounded
defeats semantic load; (b) DeclarationRef-to-stored-data composes
LensOutputEquals + data X: SymbolicCost precedent at HEAD; (c) runtime-
fixture-injection over-authors. Mgr lean (b).

Q2 ComparisonOp composition: (i) reuse existing ComparisonOp via test-
runner-side resolution matches LensOutputEquals path; (ii) new relative-
op-set introduces parallel-representation debt. Mgr lean (i).

Q3 baseline-storage scope: (α) in-scope slice authors example data; (β)
out-of-scope variant-only slice + PB consumer authors baseline data
matches existing layering. Mgr lean (β).

Combined Mgr lean: Q1(b) + Q2(i) + Q3(β) — variant authored as
compositional extension; baseline-storage is PB consumer-tier work.

Cross-Mgr: PB Mgr #2138 worker (crisp-swift-433) holds dispatch on #2204
land; T-Tier3-Dissolution #2085 R-4 prereq encoded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas REVISED (supersedes wrong-shape original)

Director disposition at #828 c#4403265220 authorized
supersession after BLOCKING at PR #2209 c#4403246233 verified VALID:
original canvas conflated symbolic SymbolicCost (cost-lens substrate)
with wall-clock measured median/p99 baseline (T-Tier3 perf gate
substrate per docs/r3-structure.md:225 + :461 Director-locked 2026-04-28).

Revised canvas frames as two-path ratification:
- P1 author full perf-budget substrate in-R3 (multi-slice; pattern-5
  genuinely-novel substrate-fact-introduction)
- P2 explicitly post-R3 per Director-locked recommendation (zero in-R3
  effort; structural close per r3-structure.md:461 'R3 deliverable is
  structural close; perf is downstream')

Mgr lean: P2 — Director-locked recommendation explicit; trigger-
condition ('someone authors perf-budget claim with concrete numbers
and tooling') not met; R3 horizon constraint argues against multi-
slice perf-budget substrate adding to 5-orthogonal-dependency picture.

Original canvas at q-perf-within-baseline-canvas.md retained with
SUPERSEDED-BY header per durable-decision-record discipline.

5th discipline-failure of 2026-05-08 cycle: substrate-grep verified
substrate-precedent but missed consumer-side requirement at canonical
authority doc; Director self-flagged symmetric two-axis verification
gap; canvas-finding-taxonomy needs precondition 'consumer-side
requirement grep-verified at canonical authority doc'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas-revised — correct trigger-condition framing per Director c#4403297623

Director caught second-axis grep failure on revised canvas: my P2
reasoning #1 ("path-trigger condition for P1 is not met") was
structurally wrong. Existing tooling at HEAD substantially meets the
Director-locked 2026-04-28 trigger-condition ("someone authors the
perf-budget claim with concrete numbers and tooling"):

- docs/briefs/r3-pb-tier3-perf-budget-worker.md
- docs/audit/c1-tier3-perf-budget-readiness-matrix.md
- src/v3/compiler/benches/tier3_mirror_perf.rs
- docs/audit/c1-tier3-baseline-capture-procedure.md
- docs/audit/c1-r3-canonical-bench-host-decision-matrix.md

Plus thresholds (≤2× median, ≤5× p99) + capture discipline (N=3 min,
N=5 preferred) + canonical bench host option matrix.

P1 is bridging existing tooling to substrate (compositional-extension),
NOT multi-slice greenfield genuinely-novel pattern-5 as originally
framed. Smaller scope than canvas-finding-taxonomy pattern 5 implies.

Path-call genuinely depends on PB Mgr's R-3 (canonical CI bench host)
+ R-7 (tier3_baseline.json baseline-capture path) decisions per their
audit response at c#4403059897. Path-call DEFERRED to cross-Mgr
coordination outcome with PB Mgr (#2074); Substrate Mgr surfaces with
corrected framing this turn.

Sixth discipline-failure of cycle (mine, second-axis grep gap on
existing-tooling state); same-class as Director's first-axis grep gap
on consumer-side requirement at the prior turn. Memorialized as
two-axis verification discipline anchor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-ValueBody-Drift-Resolution canvas — DRAFT (codegen-generation lean)

D1 substrate-shape question per Q-ValueBody-Isomorphism RATIFIED at
#828 c#4403972737. Variant-inventory readiness input from
PR #2218 (merged 2026-05-08) confirms drift: Rust 5 variants vs
substrate 3 constructors; asymmetry on Scalar+List Rust-only +
Map payload-parity-with-semantic-gap.

Two-axis verification at HEAD:
- Substrate-precedent: codegen tooling exists (regen_bootstrap_emit;
  5 _generated.rs files; regen_bootstrap binary). Pattern-3 strict-
  mirror codegen extension applies; no pattern-5 P1 procedure.
- Consumer-side requirement: V1 worker brief explicitly names mirror-
  parity-vs-codegen-generation as D1 path-pair.

Mgr lean: (b) codegen-generation. Path (a) mirror-parity perpetuates
parallel-representation debt; (b) dissolves the dual-taxonomy class
by construction (substrate canonical, Rust codegens). Map dup-key gap
handled via (ii) Rust-side post-codegen wrapping (substrate stays
minimal).

Director ratification ask: D1 (b) + D1-followup (ii).

Carrier slice path post-ratification: extend regen_bootstrap_emit;
add Scalar+List constructors to substrate; regen + remove hand-Rust
enum; handle Map dup-key per ratified followup. Worker pin fresh-pool
per same-window-dispatch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 8, 2026
…cite (#2226)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec8692): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85 — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at #2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at #2181 (sha 00551a8): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at #2181 (sha 4209eb7) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at #2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at #2181 (sha be9a9c9): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at #2181 (sha be9a9c9): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426d ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at #2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at #828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at #828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6d:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas — DRAFT (canvas-tier P1 procedure per Q6 RATIFIED)

Director Q6 RATIFIED canvas-tier-required at #828 c#4403163639
for PerfWithinBaseline TestPredicate variant authoring. Three substantive
substrate-shape questions resolved:

Q1 baseline shape: (a) literal-Int rejected as strict-mirror-of-CostBounded
defeats semantic load; (b) DeclarationRef-to-stored-data composes
LensOutputEquals + data X: SymbolicCost precedent at HEAD; (c) runtime-
fixture-injection over-authors. Mgr lean (b).

Q2 ComparisonOp composition: (i) reuse existing ComparisonOp via test-
runner-side resolution matches LensOutputEquals path; (ii) new relative-
op-set introduces parallel-representation debt. Mgr lean (i).

Q3 baseline-storage scope: (α) in-scope slice authors example data; (β)
out-of-scope variant-only slice + PB consumer authors baseline data
matches existing layering. Mgr lean (β).

Combined Mgr lean: Q1(b) + Q2(i) + Q3(β) — variant authored as
compositional extension; baseline-storage is PB consumer-tier work.

Cross-Mgr: PB Mgr #2138 worker (crisp-swift-433) holds dispatch on #2204
land; T-Tier3-Dissolution #2085 R-4 prereq encoded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas REVISED (supersedes wrong-shape original)

Director disposition at #828 c#4403265220 authorized
supersession after BLOCKING at PR #2209 c#4403246233 verified VALID:
original canvas conflated symbolic SymbolicCost (cost-lens substrate)
with wall-clock measured median/p99 baseline (T-Tier3 perf gate
substrate per docs/r3-structure.md:225 + :461 Director-locked 2026-04-28).

Revised canvas frames as two-path ratification:
- P1 author full perf-budget substrate in-R3 (multi-slice; pattern-5
  genuinely-novel substrate-fact-introduction)
- P2 explicitly post-R3 per Director-locked recommendation (zero in-R3
  effort; structural close per r3-structure.md:461 'R3 deliverable is
  structural close; perf is downstream')

Mgr lean: P2 — Director-locked recommendation explicit; trigger-
condition ('someone authors perf-budget claim with concrete numbers
and tooling') not met; R3 horizon constraint argues against multi-
slice perf-budget substrate adding to 5-orthogonal-dependency picture.

Original canvas at q-perf-within-baseline-canvas.md retained with
SUPERSEDED-BY header per durable-decision-record discipline.

5th discipline-failure of 2026-05-08 cycle: substrate-grep verified
substrate-precedent but missed consumer-side requirement at canonical
authority doc; Director self-flagged symmetric two-axis verification
gap; canvas-finding-taxonomy needs precondition 'consumer-side
requirement grep-verified at canonical authority doc'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas-revised — correct trigger-condition framing per Director c#4403297623

Director caught second-axis grep failure on revised canvas: my P2
reasoning #1 ("path-trigger condition for P1 is not met") was
structurally wrong. Existing tooling at HEAD substantially meets the
Director-locked 2026-04-28 trigger-condition ("someone authors the
perf-budget claim with concrete numbers and tooling"):

- docs/briefs/r3-pb-tier3-perf-budget-worker.md
- docs/audit/c1-tier3-perf-budget-readiness-matrix.md
- src/v3/compiler/benches/tier3_mirror_perf.rs
- docs/audit/c1-tier3-baseline-capture-procedure.md
- docs/audit/c1-r3-canonical-bench-host-decision-matrix.md

Plus thresholds (≤2× median, ≤5× p99) + capture discipline (N=3 min,
N=5 preferred) + canonical bench host option matrix.

P1 is bridging existing tooling to substrate (compositional-extension),
NOT multi-slice greenfield genuinely-novel pattern-5 as originally
framed. Smaller scope than canvas-finding-taxonomy pattern 5 implies.

Path-call genuinely depends on PB Mgr's R-3 (canonical CI bench host)
+ R-7 (tier3_baseline.json baseline-capture path) decisions per their
audit response at c#4403059897. Path-call DEFERRED to cross-Mgr
coordination outcome with PB Mgr (#2074); Substrate Mgr surfaces with
corrected framing this turn.

Sixth discipline-failure of cycle (mine, second-axis grep gap on
existing-tooling state); same-class as Director's first-axis grep gap
on consumer-side requirement at the prior turn. Memorialized as
two-axis verification discipline anchor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-ValueBody-Drift-Resolution canvas — DRAFT (codegen-generation lean)

D1 substrate-shape question per Q-ValueBody-Isomorphism RATIFIED at
#828 c#4403972737. Variant-inventory readiness input from
PR #2218 (merged 2026-05-08) confirms drift: Rust 5 variants vs
substrate 3 constructors; asymmetry on Scalar+List Rust-only +
Map payload-parity-with-semantic-gap.

Two-axis verification at HEAD:
- Substrate-precedent: codegen tooling exists (regen_bootstrap_emit;
  5 _generated.rs files; regen_bootstrap binary). Pattern-3 strict-
  mirror codegen extension applies; no pattern-5 P1 procedure.
- Consumer-side requirement: V1 worker brief explicitly names mirror-
  parity-vs-codegen-generation as D1 path-pair.

Mgr lean: (b) codegen-generation. Path (a) mirror-parity perpetuates
parallel-representation debt; (b) dissolves the dual-taxonomy class
by construction (substrate canonical, Rust codegens). Map dup-key gap
handled via (ii) Rust-side post-codegen wrapping (substrate stays
minimal).

Director ratification ask: D1 (b) + D1-followup (ii).

Carrier slice path post-ratification: extend regen_bootstrap_emit;
add Scalar+List constructors to substrate; regen + remove hand-Rust
enum; handle Map dup-key per ratified followup. Worker pin fresh-pool
per same-window-dispatch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-ValueBody-Drift-Resolution canvas amend authority cite (codex BLOCKING fix)

Director ratified (α) amendment-PR at #828 c#4404398425
post-codex-BLOCKING at PR #2222 c#4404360699.

Canvas originally cited regen_bootstrap_emit.rs as codegen authority
for ValueBody runtime mirror; corrected to scripts/regen_runtime_mirrors.py
which is the substrate→Rust runtime-mirror generator (reads substrate.dag,
emits dag_scalar_generated.rs etc.). regen_bootstrap_emit.rs is a
separate codegen system that generates bootstrap_generated.rs (bootstrap
parser/lower compile snapshot).

D1 (b) codegen-generation ratification UNCHANGED; only authority-path
cites corrected. Carrier slice path at canvas §6-step plan now references
correct runtime-mirror generator. Canvas inline notes mark amendment
location for future-reader audit trail.

8th cycle-tier framing-failure (Mgr-tier; same fine-granularity gap
parallel to Director-tier failure at c#4404256128). Two-axis verification
discipline applied at insufficient granularity (verified codegen-tooling-
exists but didn't disambiguate against bootstrap-vs-runtime-mirror systems).

Discipline anchor refinement: when canvas cites a codegen system /
tooling / authority path, identify the SPECIFIC generator/handler for
the target-file-class. Don't accept 'tooling exists' at coarse granularity.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…B scope (codex BLOCKING round 1)

codex top-level BLOCKING on PR #2363 sha c3a4b11: 4 findings, 3 of which were new (Finding 2 already addressed at e54d880). Major C2 + C3 corrections:

**Finding 1 — C2 audit relied on grep names instead of locked design authority**:
Prior framing claimed 4c (caller-side effect-set pinning carrier) is NEW substrate-fact-introduction. Verified against locked design at docs/design-effect-enumeration-resource-threading.md §3.2 + §6.2: "The pinning substrate carrier ALREADY EXISTS at src/v3/std/services.dag::Operation. No new top-level carrier is required." §6.2: "Operation already exists. No new substrate type."

Carve doc's "4c is NEW substrate intro required" claim is stale relative to the more recent locked design. C2 is substrate-ready (atomic migration shape per §6.2), not substrate-cliff.

Fix: §2 major rewrite — replaced grep-based assessment with design-doc authority cite. C2 reclassified substrate-ready (same shape as C1). The earlier "(a) full carve-promotion vs (γ) stub" disposition is MOOT — there's no 4c canvas to author since the carrier already exists.

**Finding 3 — C3 readiness treated design sketch as landed substrate**:
Prior framing said "lens_application.dag exists" → "substrate-ready conditional on C1." Codex correct: Slice A landed (#88-#90 PR #2145) but Slice B (#91 per-lens LensEnforcement projection + violation routing) is pending per design §10 step 2.

Fix: §3 corrects scope. C3 cascade-gates on (a) T-LAS Slice B landing + (b) C1 parallelism lens BEHAVIORALLY COMPLETE. Both prerequisites named explicitly.

**Finding 4 — C3 scoped to opt-in parallelism worked example instead of shared lens-application surface lane**:
Prior framing treated #95 as separate carve. Per r3-structure.md:164: #95 is the "fourth worked example (design §4.4)" — a demonstration gate UNDER the T-Lens-Application-Surface lane. It's a worked-example demo, not a separate substrate carve.

Fix: §3 corrects scope alignment with r3-structure.md + design-lens-application-surface.md. #95 promotes as worked-example demo gate; substrate prerequisites (Slice B + C1) tracked in their respective lanes.

**Net audit revision**: all 3 carves substrate-ready (was: 2 ready + 1 cliff). No substrate-cliff in any carve. §0 + §4 + §5 + §6 updated to reflect.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…odex BLOCKING round 2)

codex review on PR #2363 sha 32afcd3: 2 BLOCKING findings.

**BLOCKING #1 — non-live parent authorities**

Parent docs section listed `r3-pb0-velocity-walk-2026-05-09.md` as
authority but it's not on main (concurrent PR #2358). Codex's broader
"first two parent authority links absent" framing is a tree-visibility
false positive on r4-carve-out-routing.md + r3-program-plan.md (both
exist on main per `git ls-tree origin/main`), but the underlying
finding about authority-chain live-state grounding is valid.

Fix: split parent docs into "Parent docs (live state on main)" vs
"In-flight authorities" sections. On-main set: r4-carve-out-routing.md
+ r3-program-plan.md + r3-structure.md + design-effect-enumeration-
resource-threading.md + design-lens-application-surface.md (each
verified via git ls-tree on origin/main). In-flight: velocity-walk
(PR #2358) cited inline only for routing context — substrate state of
effects.dag + workflow_parallelism.rs is independently verifiable on
main without needing the velocity-walk authority.

**BLOCKING #2 — C3 imports PR/status claims instead of live state**

Prior §3.1 misidentified gate-number → carrier mapping:
- Cited "Slice A landed (#88-#90)" + "Slice B (#91 per-lens
  LensEnforcement projection + violation routing) NOT yet landed"
- Live ledger on main says #90 = lens_enforcement_carrier_landed
  (CONSUMER_LANDED Slice A; parametric carrier landed; per-lens
  data instances pending Slice B per #90 Pass condition); #91 =
  enforce_violation_routing_landed (DECLARED; substrate routing
  surface landed PR #2145; CONSUMER_LANDED requires fold-pass
  consumer per design §10 step 2 — deferred to Slice B)

Fix: replaced grep-based gate-status framing with live-ledger
reading table citing exact §1.8 row content from r3-program-plan.md
on main. What's actually pending for Slice B (per #90 + #91 Pass
conditions on main): per-lens data instances of LensEnforcement
co-located with each lens (parallelism specifically for #95) +
fold-pass consumer for #91 violation routing.

§3.2 Cascade-gating chain rewritten as 4-step ordering with substrate
prerequisite (carrier landing before #95) made explicit per codex
BLOCKING ratification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…dex BLOCKING round 3)

codex review on PR #2363 sha 54e4baf: BLOCKING — "Audit still imports
non-live PR/status claims as live authorities → replace the missing
parent docs with live repo authorities and rebase C3 on the current
T-LAS design/readiness docs with carrier landing as a prerequisite."

§3.1 live-ledger table (added at sha 54e4baf) correctly mapped gates
#88/#89/#90/#91 to live blob in src/v3/std/lens_application.dag, but
§0 summary table row C3 + §0 prerequisites bullet still used the
prior PR-status framing that misidentified #91 as
"per-lens LensEnforcement projection + violation routing" — that's
actually #90's Pass condition Slice B requirement (parametric
carrier landed Slice A; per-lens instances pending Slice B).

Fix: cascade §3.1's live-state mapping into §0:
- §0 row C3: cite live blob (`src/v3/std/lens_application.dag`,
  blob `968aa84a` per git ls-tree origin/main) + correct gate-to-Slice
  mapping + Slice B prereqs split (a) per-lens instance per #90 Pass
  condition; (b) fold-pass consumer for #91 violation routing per
  locked design §10 step 2
- §0 prerequisites bullet: same 3-prong split (a)+(b)+(c)
  parallelism BEHAVIORALLY COMPLETE; cross-ref to §3.1 table for
  live-state authority

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…or-greenlit (α) carve-promotion-IN-R3) (#2363)

* docs(audit): R3 R4-carve substrate-readiness audit (C1/C2/C3) — Director-greenlit per (α) ratification

Per Director ratification at gunbc#846 #issuecomment-4412330468 (2026-05-09): RATIFIED PM (α) carve-promotion-IN-R3 recommendation per operator's 2026-05-09 framing "R3 close = 0 hand-Rust including tests AND stage0; bootstrap is data + self-generated."

Substrate-readiness audit findings:

**C1 #81 parallelism lens**: substrate-ready. effects.dag provides EffectShape/OperationEffect/CompositionVerdict; workflow_parallelism.rs imports map cleanly; port-and-rewire bounded (M-sized lane). RECOMMENDATION: full carve-promotion to R3.

**C2 #82 effect_enumeration lens**: MIXED. 4a/4b/4d bounded (consumer migration + cleanup); 4c (caller-side effect-set pinning carrier) is NEW P1 substrate-fact-introduction not landed at HEAD. RECOMMENDATION: Director disposition between (a) full carve-promotion with 4c canvas authoring in R3 (PM-recommended per strict-zero framing) OR (b) γ .dag-stub-form interim with 4c R4-carved.

**C3 #95 opt-in iteration parallelism via lens application**: substrate-ready conditional on C1. lens_application.dag exists; cascade-gated on C1 BEHAVIORALLY COMPLETE. RECOMMENDATION: full carve-promotion to R3 (cascade post-C1).

Cluster F sequencing folder: #81 + #82 + #95 fold into existing T-LP-Retirement (lens-producer-retirement structural framing). Sub-phase α (#81 port) + β (#82 per disposition) + γ (#95 demo cascade post-α).

Velocity-to-zero update: original 4-6 bulk events → 5-9 bulk events post-carve-promotion. Bounded substrate/cluster work per "staffing not concern."

Out-of-scope follow-ups: UNACCOUNTED entries in non-test census (Director's separate ask) — handled in Task 13 follow-up audit, not this artifact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(audit): §0 + §2.3 — P1 modeling-vs-process layers + decision-state scope clarification (openai-pro REQUEST_CHANGES)

openai-pro review on PR #2363 sha c3a4b11: 2 valid findings.

**Finding 1 — P1 substrate-fact-introduction procedure misrepresented**:
§2.3 line 87 cited "INVARIANTS.md P1 procedure" but listed 4 dispatch/process gates (confirmed bridge consumer / carrier shape ratification / worker brief authoring / substrate-introduction PR). The actual P1 procedure (INVARIANTS.md:94-129) is 3 modeling checks: DAG-ancestor / coproduct-vs-coordinate / primitive-vs-lens-extensible. Folding both into one "P1" label authorizes carve-promotion without proving the new carrier is the right substrate fact.

Fix: §2.3 now explicitly separates two layers — Layer 1 is the actual P1 modeling checks (cited with line references INVARIANTS.md:100-128); Layer 2 is dispatch/process gates. Layer 1 must surface in canvas authoring before carrier shape ratification; Layer 2 is the dispatch sequence. Both required.

**Finding 2 — Decision-state ambiguity (α ratified vs C2 disposition open)**:
Doc said audit is per Director (α) ratification but kept C2 as "Director disposition needed" — read as competing decision states. Cluster F dispatch couldn't tell whether (a) is ratified or γ-stub remains alternative.

Fix: §0 adds explicit scope clarification — (α) thesis (carves dissolve; #81/#82/#95 R3-load-bearing) is RATIFIED at thesis level; C2 #82 sub-disposition (a vs γ-stub) is finer-grain decision *within* (α) framework. Both paths satisfy operator strict-zero framing; they differ on R3 (path (a)) vs R4 (path (γ)) timing of #82's behavioral completion. Two scopes, no contradiction.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(audit): C2/C3 substrate-readiness — design-doc authority + Slice B scope (codex BLOCKING round 1)

codex top-level BLOCKING on PR #2363 sha c3a4b11: 4 findings, 3 of which were new (Finding 2 already addressed at e54d880). Major C2 + C3 corrections:

**Finding 1 — C2 audit relied on grep names instead of locked design authority**:
Prior framing claimed 4c (caller-side effect-set pinning carrier) is NEW substrate-fact-introduction. Verified against locked design at docs/design-effect-enumeration-resource-threading.md §3.2 + §6.2: "The pinning substrate carrier ALREADY EXISTS at src/v3/std/services.dag::Operation. No new top-level carrier is required." §6.2: "Operation already exists. No new substrate type."

Carve doc's "4c is NEW substrate intro required" claim is stale relative to the more recent locked design. C2 is substrate-ready (atomic migration shape per §6.2), not substrate-cliff.

Fix: §2 major rewrite — replaced grep-based assessment with design-doc authority cite. C2 reclassified substrate-ready (same shape as C1). The earlier "(a) full carve-promotion vs (γ) stub" disposition is MOOT — there's no 4c canvas to author since the carrier already exists.

**Finding 3 — C3 readiness treated design sketch as landed substrate**:
Prior framing said "lens_application.dag exists" → "substrate-ready conditional on C1." Codex correct: Slice A landed (#88-#90 PR #2145) but Slice B (#91 per-lens LensEnforcement projection + violation routing) is pending per design §10 step 2.

Fix: §3 corrects scope. C3 cascade-gates on (a) T-LAS Slice B landing + (b) C1 parallelism lens BEHAVIORALLY COMPLETE. Both prerequisites named explicitly.

**Finding 4 — C3 scoped to opt-in parallelism worked example instead of shared lens-application surface lane**:
Prior framing treated #95 as separate carve. Per r3-structure.md:164: #95 is the "fourth worked example (design §4.4)" — a demonstration gate UNDER the T-Lens-Application-Surface lane. It's a worked-example demo, not a separate substrate carve.

Fix: §3 corrects scope alignment with r3-structure.md + design-lens-application-surface.md. #95 promotes as worked-example demo gate; substrate prerequisites (Slice B + C1) tracked in their respective lanes.

**Net audit revision**: all 3 carves substrate-ready (was: 2 ready + 1 cliff). No substrate-cliff in any carve. §0 + §4 + §5 + §6 updated to reflect.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(audit): §3.1 C3 cascade — distinguish gate-level vs lane-level dependencies (codex BLOCKING)

codex inline BLOCKING @ docs/audit/r3-r4-carve-substrate-readiness-2026-05-09.md:112: prior cascade chain "C3 cascade-gates on parallelism lens BEHAVIORALLY COMPLETE" understated the lane-level dependency.

Per r3-structure.md:61: T-Lens-Application-Surface lane depends on T-Lens-Behavioral-Parity COMPLETE (all 4 in-R3 lenses: complexity #79 + cost #80 + parallelism #81 + effect_enum #82), not only C1.

Fix: §3.1 distinguishes:
- Lane-level (T-LAS Slice B substrate authoring complete): gates on full T-LBP COMPLETE.
- Gate-level (#95 specific demo): gates on parallelism-lens projection within Slice B + parallelism BEHAVIORALLY COMPLETE (C1).

Both dependencies named explicitly. The simplified "cascade-gates on Slice B + C1" framing was correct for #95-specific firing but understated the lane-level closure dependency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(audit): C3 §3.1 live-ledger reading + parent-doc on-main scope (codex BLOCKING round 2)

codex review on PR #2363 sha 32afcd3: 2 BLOCKING findings.

**BLOCKING #1 — non-live parent authorities**

Parent docs section listed `r3-pb0-velocity-walk-2026-05-09.md` as
authority but it's not on main (concurrent PR #2358). Codex's broader
"first two parent authority links absent" framing is a tree-visibility
false positive on r4-carve-out-routing.md + r3-program-plan.md (both
exist on main per `git ls-tree origin/main`), but the underlying
finding about authority-chain live-state grounding is valid.

Fix: split parent docs into "Parent docs (live state on main)" vs
"In-flight authorities" sections. On-main set: r4-carve-out-routing.md
+ r3-program-plan.md + r3-structure.md + design-effect-enumeration-
resource-threading.md + design-lens-application-surface.md (each
verified via git ls-tree on origin/main). In-flight: velocity-walk
(PR #2358) cited inline only for routing context — substrate state of
effects.dag + workflow_parallelism.rs is independently verifiable on
main without needing the velocity-walk authority.

**BLOCKING #2 — C3 imports PR/status claims instead of live state**

Prior §3.1 misidentified gate-number → carrier mapping:
- Cited "Slice A landed (#88-#90)" + "Slice B (#91 per-lens
  LensEnforcement projection + violation routing) NOT yet landed"
- Live ledger on main says #90 = lens_enforcement_carrier_landed
  (CONSUMER_LANDED Slice A; parametric carrier landed; per-lens
  data instances pending Slice B per #90 Pass condition); #91 =
  enforce_violation_routing_landed (DECLARED; substrate routing
  surface landed PR #2145; CONSUMER_LANDED requires fold-pass
  consumer per design §10 step 2 — deferred to Slice B)

Fix: replaced grep-based gate-status framing with live-ledger
reading table citing exact §1.8 row content from r3-program-plan.md
on main. What's actually pending for Slice B (per #90 + #91 Pass
conditions on main): per-lens data instances of LensEnforcement
co-located with each lens (parallelism specifically for #95) +
fold-pass consumer for #91 violation routing.

§3.2 Cascade-gating chain rewritten as 4-step ordering with substrate
prerequisite (carrier landing before #95) made explicit per codex
BLOCKING ratification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(audit): §0 C3 + §0 prerequisites — live-state mapping cascade (codex BLOCKING round 3)

codex review on PR #2363 sha 54e4baf: BLOCKING — "Audit still imports
non-live PR/status claims as live authorities → replace the missing
parent docs with live repo authorities and rebase C3 on the current
T-LAS design/readiness docs with carrier landing as a prerequisite."

§3.1 live-ledger table (added at sha 54e4baf) correctly mapped gates
#88/#89/#90/#91 to live blob in src/v3/std/lens_application.dag, but
§0 summary table row C3 + §0 prerequisites bullet still used the
prior PR-status framing that misidentified #91 as
"per-lens LensEnforcement projection + violation routing" — that's
actually #90's Pass condition Slice B requirement (parametric
carrier landed Slice A; per-lens instances pending Slice B).

Fix: cascade §3.1's live-state mapping into §0:
- §0 row C3: cite live blob (`src/v3/std/lens_application.dag`,
  blob `968aa84a` per git ls-tree origin/main) + correct gate-to-Slice
  mapping + Slice B prereqs split (a) per-lens instance per #90 Pass
  condition; (b) fold-pass consumer for #91 violation routing per
  locked design §10 step 2
- §0 prerequisites bullet: same 3-prong split (a)+(b)+(c)
  parallelism BEHAVIORALLY COMPLETE; cross-ref to §3.1 table for
  live-state authority

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…population drift (#2333)

* docs(briefs): Substrate bridge SourceSpan.file participation retirement worker brief

Authored for gunbc#1958 Substrate-owned bridge slice. Targets audit-row #2
(kernel Bool patch BOOL_TYPES_FILE) + row #6 (pipeline authority
PIPELINE_AUTHORITY_FILE) per r3-program-plan.md §5 line 353 scope-narrowing.
Sibling #1959 closed as already-retired by PR #1272.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 Variant-aware projection carrier canvas (#1947)

Surfaces 3 carrier-shape options (α RestResponseProjection variant-tag /
β Declaration variant_projection_metadata / γ free-standing CoproductProjection)
for Director ratification before worker brief authoring. Mgr-tier recommendation
= γ (DeclarationRef-keyed, avoids tag-string-as-identity bridge).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — same-slice prerequisite + section anchor

Director calibration (gunbc#2079 #issuecomment-...):
1. Promote ratchet-test cross-Mgr handoff from conditional Acceptance #4
   to upfront same-slice BLOCKING prerequisite gate (per
   feedback_same_slice_dissolution_discipline).
2. Replace `r3-program-plan.md:353` line-cite with `§5 Y4 scope-clarification`
   section anchor (per feedback_section_anchors_over_line_numbers).

Code-line anchors in bootstrap.rs left as-is (anchor sites worker navigates to).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — umbrella stays Open per P2 ledger discipline

Address BLOCKING inline review at line 46: bridge_source_span_file_participation_retired
is an Open umbrella whose green predicate is "no production code path consults
SourceSpan.file" per r3-structure.md:115. Partial retirement was explicitly
rejected 2026-04-29 (Director acceptance #1130 / dispatch #1139).

Changes:
- Add Ledger-discipline preamble: umbrella row stays Open; receipt updates
  audit-packet enumeration, NOT bridge_ledger.dag.
- Acceptance #3 reframed: do NOT mutate bridge_ledger.dag; mark rows #2 + #6
  retired in the audit packet only.
- Authority anchor updated: status=Open (not Proposed); add r3-structure.md:115
  + bridge_ledger.dag:125-129 line refs.
- Cross-Mgr section reframed: umbrella ratchet cannot flip on this PR alone;
  Verification's ledger-zero audit progress field is post-merge tracking,
  not a same-slice pre-merge blocker. Reconciles with BLOCKING finding
  (Director calibration #1 assumed umbrella ratchet could flip on partial
  retirement, which r3-structure.md:115 forbids).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 CoproductProjection worker brief — γ ratified (#1947)

Director ratification of option γ at gunbc#828 #issuecomment-4394369848.
Free-standing CoproductProjection carrier in src/v3/std/, DeclarationRef-keyed,
typed WireTagValue leaf, 4 same-slice acceptance gates.

Surfaces 3 substrate observations for STOP-and-PING (DeclarationRef String
alias; FieldRef does-not-exist-at-HEAD; tag_field String asymmetry) — worker
must escalate, not silently work around. PB Mgr cross-Mgr ping at carrier
landing (heads-up, not blocker).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan.file brief — resolve Acceptance #4 / Cross-Mgr contradiction

openai-pro REQUEST_CHANGES at PR #2079 #issuecomment-... flagged Acceptance #4
("ratchet test passes ... confirmed-present at HEAD before merge") contradicting
the reframed Cross-Mgr section ("No same-slice ratchet-test gate applies; post-merge
tracking only"). Both said different things about whether the umbrella ratchet
is a pre-merge blocker.

Resolution: Acceptance #4 reframed to explicitly state "No umbrella-ratchet
pre-merge gate" — worker does NOT wait for Verification ratchet authoring;
acceptance for this slice is the audit-packet receipt update in #3. Cross-Mgr
handoff also updated to remove "ratchet authoring" from Verification's same-slice
duties.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): S5 brief — absorb Director pre-ratifications for 3 STOP-and-PING items

Director pre-ratified dispositions at gunbc#828 #issuecomment-4394416049:
1. DeclarationRef alias: accept (b) + debt note (re-escalate only on same-slice break)
2. FieldRef: grep-decide between InputFieldRef-as-specialization vs rename
3. tag_field String asymmetry: typed introduction + debt note for migration

Worker proceeds without re-pinging unless evidence forces escalation. STOP-criteria
section narrowed accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification Gate A receipt — Option A (Dag-as-carrier)

Director ratification at gunbc#828 #issuecomment-4394427814 + proposal merge
at PR #2096 (commit fec869202): src/v3/std/substrate.dag::Dag IS the reflected
program; no new substrate carrier required. ReflectedProgram<T> rejected.

Gate A patches:
1. r3-program-plan.md §10.3: new Q-Reification row marked RATIFIED with PR #2096
   merge link + Gate A receipt scope (this PR + #1960 closed-as-non-addition).
2. r3-v-pattern-a-tc1-v1-worker.md: 3 sites — status header (Q-Reification
   CLEARED, Branch B η non-vacuity remains), worker-pin gate, E6-G1.a/E3
   producer dependency. Replaces ReflectedProgram<T> with consumer-wiring
   nuance: lens fold consumes Dag via .dag body authority through Evaluator.
3. r3-pr-e6-g1a-option3-static-lens-worker.md: 2 sites — same nuance: deferred
   work is consumer-wiring, NOT a separate carrier.
4. r3-pr-e8-w1-producer-contract-test-plan-worker.md: 1 site — fold-over-Dag
   reframe.

Receipt of pass-by-construction: this PR adds NO new .dag declaration to
src/v3/std/. The ratification is structurally a non-addition (Option A
correctness proof per same-slice dissolution discipline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — delete superseded canvas + name dissolution trigger for tag_field asymmetry

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings (P2 single-authority
+ P5 dissolution trigger).

Fixes:
1. Delete docs/briefs/r3-substrate-s5-variant-aware-projection-carrier-canvas.md
   (superseded by the γ-ratified worker brief in same PR; would otherwise leave
   two current-looking S5 status authorities post-merge — one saying ratification
   pending, one saying γ ratified).
2. Substrate observation #3 (tag_field String/FieldRef asymmetry) now carries a
   binding named dissolution trigger: when FieldRef exists as top-level carrier
   AND InputFieldRef is classified, migrate InternallyTaggedObject.tag_field via
   follow-on Substrate hygiene PR. Worker MUST add debt-paydown row to authoritative
   debt ledger before merging carrier-introduction PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): Q-Reification row — fix invariant cite (C-1 → P2)

cursor review at gunbc#2079 #issuecomment-... flagged C-1 as mis-keyed:
INVARIANTS.md C-1 is "missing args fail closed; no LitNull sentinels" (P3
fail-closed family), not parallel-representation/duplicate-authority. The
correct cite for rejecting a parallel ReflectedProgram<T> alongside Dag is
P2 single authority (INVARIANTS.md line 148: cost of change is proportional
to how many files encode the same fact).

Cite updated to "INVARIANTS.md P2 single authority" with inline gloss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — name dissolution trigger for DeclarationRef alias debt

openai-pro REQUEST_CHANGES at gunbc#2079: substrate observation #1 had desired
endpoint ("future structural promotion of DeclarationRef") but no checkable
dissolution trigger — same P5 gap that #3 (tag_field asymmetry) had been fixed
for in commit 2601d7d26.

Trigger now binding: promote DeclarationRef when EITHER
  (a) audit-row #14 (declaration_name_preference_rank / declaration_by_name
      rank-table) closes — dsl/std ↔ src/v3/std module convergence makes
      name-keyed identity unambiguous and structural module identity available,
  OR
  (b) any DeclarationRef-typed consumer surfaces a string-identity bridge per
      feedback_opaque_strings_attract_heuristics (heuristic patching, naming-
      convention dispatch, suffix/prefix matching).

Worker MUST add debt-paydown row before merging carrier-introduction PR (same
pattern as the tag_field debt requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: complete Q-Reification stale-cite sweep — e6-g1a brief :169 + Q-PAFS row

codex BLOCKING at gunbc#2079: docs/briefs/r3-pr-e6-g1a-option3-static-lens-worker.md:169
still said TC1/V1 "waits for Q-Reification and the carrier landing", contradicting
the same brief's lines 15-19 + 148-153 saying Dag IS the carrier and no separate
carrier lands.

Fixed:
1. e6-g1a brief line 167-170 paragraph: clarified V1 waits for consumer-wiring
   work (lens fold consuming Dag via .dag body authority through Evaluator), NOT
   for a carrier-introduction.
2. r3-program-plan.md:954 Q-PAFS row text was the same shape: "Resume after
   Q-Reification + ReflectedProgram<T>" — contradicted my new Q-Reification row
   in the same diff. Updated: Q-Reification STOP CLEARED 2026-05-07 (Option A);
   remaining hold = Branch B η non-vacuity only.

Out-of-scope-for-this-PR: docs/briefs/r3-pr-e6-g1a-option3-feasibility-probe.md
contains 4 stale cites but is not modified in this PR; stale-on-main can be
swept in a follow-up if needed (single source of truth is the e6-g1a-static-lens
worker brief, not the feasibility probe per Q-PAFS Path A acceptance).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix InputFieldRef mis-read; reframe observations #2 + #3

codex BLOCKING at gunbc#2079 line 22: my brief mis-read services.dag:28-36.
The text actually says "No separate InputFieldRef carrier is introduced here,
since ParamToken.name already carries the same shape and adding a wrapper would
duplicate without strengthening the structural invariant" — i.e., InputFieldRef
does NOT exist; the comment REJECTS the wrapper.

Fixes:
1. Substrate observation #2 reframed: no FieldRef-shaped carrier exists at HEAD;
   services.dag:28-36 precedent argues against wrapper unless it strengthens
   structural invariant. New (a)/(b) STOP-and-PING:
   (a) follow services.dag precedent — wire_tag_field: String + key invariant
       on wire_tag_values + fixture-load fail-closed check;
   (b) introduce typed FieldRef — must justify per "duplicate without
       strengthening" test.
2. Carrier shape (line 19): wire_tag_field: FieldRef → {String|FieldRef}
   pending observation #2 resolution.
3. Substrate observation #3 reframed: InternallyTaggedObject asymmetry is
   conditional on path (b); under path (a) no asymmetry exists. Trigger
   correspondingly conditional. Removed stale "InputFieldRef classified" trigger
   clause.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — consolidate split per-variant maps into single keyed entry

openai-pro REQUEST_CHANGES at gunbc#2079: CoproductProjection shape split
per-variant data across two parallel maps (variant_field_projections +
wire_tag_values), admitting illegal states where keysets drift (P2 boundary
discipline / illegal-states-unrepresentable).

Fix: introduce CoproductVariantProjection { field_projection, wire_tag_value }
as the per-variant keyed value; CoproductProjection.variant_projections becomes
Map<VariantId, CoproductVariantProjection>. Single keyed authority per variant.

Director's binding constraint #2 enumerated the two fields separately but said
"refine in implementation as ergonomics demand" — consolidation preserves the
substantive constraints (typed WireTagValue leaf, structural per-variant
projection) while enforcing keyset alignment by carrier shape.

Empty-payload variants encoded via FieldProjection::Empty constructor (or
analog), not via map-absence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): S5 — fix stale split-map vocab in path (a) + scope STOP-and-PING umbrella

openai-pro REQUEST_CHANGES at gunbc#2079: 2 BLOCKING findings.

1. Path (a) at line 43 still referenced "Map<VariantId, WireTagValue> key invariant
   on wire_tag_values" — that's the superseded split-map vocab; the consolidated
   shape is Map<VariantId, CoproductVariantProjection> on variant_projections.
   Path (a) now references the consolidated map; per-variant WireTagValue lives
   inside CoproductVariantProjection.

2. Pre-ratification umbrella at line 36 said "all 3 dispositions pre-ratified,
   proceed without re-pinging" — but observation #2 was re-opened after the
   codex InputFieldRef finding and explicitly says STOP-and-PING. Contradictory.
   Umbrella now scoped: observations #1 + #3 are pre-ratified; #2 is re-opened
   STOP-and-PING — worker MUST escalate before choosing path (a) vs (b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof canvas — 4-residual coproduct-dissolution audit

Director ratified split disposition at gunbc#828 #issuecomment-4394696074:
descent_execution_proof STANDS ALONE (consumer-side termination-contract
substrate function with fail-closed residual enumeration; folding into
T-E-P-Producer-Broadening explicitly rejected — different concern axis).

Canvas surfaces 3 carrier-shape options for the residual enumeration per
Director's coproduct-dissolution audit suggestion:

α: 4-variant coproduct verbatim from §10.3 row 966 (Missing | Unknown |
   Incomplete | NonStrict)
β: 3-axis dimensional product (presence × completeness × strictness)
γ (recommended): reuse DescentEvidence at termination.dag:14-17 for
   "absent/unknown" via EvidenceUnknown(DescentEvidence) payload-variant +
   separate EvidenceIncomplete — ratchets variant count 4 → 2 via dimensional
   folding while honoring services.dag "no parallel wrapper" precedent.

Mgr recommendation γ; β rejected unless 3 axes provably compose orthogonally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): SourceSpan brief Row #6 — derive from bootstrap_authority map, no new enum variant

codex BLOCKING (post-merge of #2079, on commit 85ceb85a — same brief is now on
main): my Row #6 disposition told the worker to introduce a new
BootstrapAuthority::Pipeline variant ("extend the enum if needed"). That
violates P2 single-authority — src/v3/std/bootstrap_authority.dag:90 already
has "src/v3/compiler/pipeline.dag": CompilerAuthority, classifying pipeline.dag
under the existing CompilerAuthority variant. The :14-17 comment is explicit:
"the path itself is the BootstrapAuthoritySet map key; variants carry no
duplicate path payload" — single authority, not extension-by-variant.

Fix: Row #6 now instructs worker to derive the typed key from the existing
bootstrap_authority-map witness (BootstrapAuthorityKey threading the existing
CompilerAuthority classifier), refining the constructor surface if needed —
NOT introducing a new enum variant. STOP-and-PING criteria updated to forbid
new-variant resolution under any path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof worker brief — γ ratified (2-variant residual)

Director ratification at gunbc#828 #issuecomment-4395060514:
- DescentResidual = EvidenceUnknown(DescentEvidence) | EvidenceIncomplete
  (4 → 2 dissolution: Missing+Unknown fold via DescentUnknown injection;
  NonStrict folds via NonIncreasing wrap; Incomplete retained — different
  concern axis from evidence-lattice)
- DescentEvidence 3-variant lattice at termination.dag:14-17 confirmed as
  authoritative composition target
- Type signature from §10.3 row 966 confirmed verbatim-binding

Director-asked canvas-shape verification absorbed: worker STOPs if
EvidenceIncomplete decomposes into payload-variants (timeout / depth-bound /
evaluator-error-during-proof-construction); proceeds as 2-variant otherwise.

7 same-slice acceptance gates incl Evaluator E2 #1971 consumer wiring in same
PR + §10.3 row 966 row-text refresh to cite γ-disposition.

Worker pin: quick-koi-190 (pre-authorized per §10.3 row 966).

Auto-spawn HOLD per L-sized threshold; surgical-recreate path ratified
case-by-case if critical path blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): descent_execution_proof — narrow EvidenceUnknown payload via NonStrictEvidence subset; delete superseded canvas

openai-pro REQUEST_CHANGES at gunbc#2105: 2 findings.

1. BLOCKING (LAYER MODEL / illegal states unrepresentable): worker brief
   shape `EvidenceUnknown(DescentEvidence)` admitted EvidenceUnknown(Strict)
   even though the canvas itself acknowledged Strict-isn't-a-residual as
   illegal. P2 requires API-level enforcement, not prose convention.

   Fix: introduce typed subset `NonStrictEvidence = NonIncreasing |
   DescentUnknown`; residual now `EvidenceUnknown(NonStrictEvidence)` —
   illegal-states-unrepresentable by construction. NonStrictEvidence lands in
   same file as DescentResidual; composes with existing 3-variant
   DescentEvidence via inhabitation, not re-definition.

2. NON-BLOCKING (live-state drift): canvas + worker brief both visible with
   "ratification needed" vs "ratified" status — same P2 single-authority
   shape as the S5 canvas/worker-brief co-existence at #2079.

   Fix: delete docs/briefs/r3-substrate-descent-execution-proof-canvas.md
   (worker brief frontmatter already names it as superseded; with canvas
   gone the live authority is unambiguous).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): descent_execution_proof — section-anchor cite for §10.3 row

codex BLOCKING at gunbc#2105 line 47: my brief cited "§10.3 row 966" but the
actual line is now 986 (after my Q-Reification row insert in PR #2079 shifted
§10.3 by 20 lines). Reviewer's "no such section" claim is wrong on substance
(file + section + row all exist) but the line drift IS real.

Fix per feedback_section_anchors_over_line_numbers (Director calibration in
gunbc#2079): replaced all "§10.3 row 966" with "§10.3 Q-EVAL-Descent-
Termination-Contract row" — name-anchor instead of line-anchor, drift-immune.
5 occurrences cleaned (closure predicate, acceptance gate #3, gate #5, STOP
criterion, worker pin justification). Stylistic "row row-text" repetition
collapsed to "row text".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition canvas — Lens<SymbolicCost> composition shape (#1957)

Pre-staged per Director endorsement of T-CostLens-Composition canvas-shape
authoring. Surfaces 3 composition options for the Lens<SymbolicCost> instance:

α: two separate lenses, externally joined — REJECTED (violates §1.8 gate #39
   no_coercion_cost_dimension by construction)
β: single Lens<SymbolicCost> with composed witness in read — strong but
   requires Lens<C> carrier-shape refactor (target-context threading)
γ (recommended): Lens<SymbolicCost> reads structural cost via algebra-fold +
   target-realization composed via existing Lookup<SymbolicCost> substrate at
   lookup.dag:48-60 — preserves generic Lens<C> carrier; satisfies all 4 §1.8
   gates (#37-40) by construction; aligns with feedback_audit_adjacent_authority_first

Adjacent substrate verified at HEAD: lens.dag:70-77 (Lens<C>), algebra.dag:12+
(SymbolicCost 7-variant + Semiring), lookup.dag:48-60 (Lookup<SymbolicCost> +
MissingCost lens-boundary).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-Workflow-As-Data canvas — audit-receipt-honoring scope-narrowing

Pre-staged per Director endorsement. Q-Workflow-As-Data-Carriers (§10.3 row 983)
named 5 carriers; grep-verified at HEAD that 4 of 5 ALREADY EXIST in
dsl/extdeps/github/actions.dag (218 lines). Only WorkflowSecret<Name> is
wholly net-new substrate.

Surfaces 3 options:
α: maximalist 5-carrier introduction in dsl/std/workflow.dag — REJECTED
   (admits parallel-representation debt vs audit-receipt #1771 reuse-first
   directive)
β (recommended): minimalist — only WorkflowSecret<Name> + Cron<Schedule>
   refinement net-new; lens consumes extdeps.github.actions directly. Honors
   feedback_audit_adjacent_authority_first.
γ: like β + WorkflowObservationAnchor for typed lens-consumption-shape;
   natural ratchet from β if evidence accumulates.

Sequencing: dispatch-ready post-T-LBP COMPLETE per §S4 design-schedule:95;
brief authoring lands in advance per pre-staging discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens-Composition worker brief — γ ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395691775:
- γ option ratified (Lens<SymbolicCost> + Lookup<SymbolicCost> composition)
- Lens<C> generic at lens.dag:70-77 confirmed authoritative (no refactor in scope)
- symbolic_cost_dimension: AnalysisDimension<SymbolicCost> defers to separate
  Dimensions sub-lane

Critical reframing absorbed: src/v3/lenses/cost.dag ALREADY EXISTS (status:
STRUCTURALLY TERMINAL; BEHAVIORALLY PROXY). T-CostLens-Composition is
behavioral-completion + target-realization-wiring, NOT P1 carrier introduction.
Worker reads existing lens; advances PROXY → BEHAVIORALLY COMPLETE via
Lookup<SymbolicCost> composition.

8 same-slice acceptance gates incl §1.8 #37-40 + #70 demonstration + lens
status header refresh + §10.3 row text refresh.

Out-of-scope (deferred per Director): symbolic_cost_dimension; Lens<C>
generic refactor (STOP-and-PING if implementation reveals need).

Canvas deleted per single-authority discipline (same precedent as S5 +
descent_execution_proof canvas deletions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Delete superseded T-CostLens canvas (worker brief is single live authority)

* docs(briefs): T-WAD Slice 1 worker brief — β ratified; delete canvas

Director ratification at gunbc#828 #issuecomment-4395945465: 4 asks confirmed:
1. β ratified (minimalist reuse-first)
2. #1771 audit-receipt binding precedent confirmed
3. WorkflowSecret<Name> folds into dsl/extdeps/github/actions.dag (provider-
   specific scope; NOT new dsl/std/ file unless cross-provider evidence)
4. §1.8 gates #54 + #55 split into separate slices (slice 2 = timing-and-pattern;
   slice 3 = ci_workflow_modeled_as_dag)

Slice 1 net-new substrate (only):
- WorkflowSecret<Name> + SecretScope carriers
- CronExpression + CronField (typed refinement of existing
  WorkflowTrigger::Schedule { cron: String } at actions.dag:43)

Other 4 carriers from §10.3 row 983 reused as-is from extdeps.github.actions
per audit-receipt #1771 directive.

6 same-slice acceptance gates incl no-parallel-representation grep + gate
#53/#62/#63 advancement + bootstrap regen + clippy.

Cross-provider STOP-and-PING per Director ask #3 caveat: worker greps adjacent
provider work for WorkflowSecret-shape evidence; surfaces if found before
finalizing fold-into-extdeps.

Canvas deleted per single-authority discipline (S5 + descent_execution_proof +
T-CostLens precedent).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demo (#1952) complexity-contract compile-error worker brief

Pre-staged execution brief per Director endorsement of T-LAS demos via direct
worker brief path (no canvas — design-lock at docs/design-lens-application-
surface.md specifies fixture shape verbatim at line 292).

7 same-slice acceptance gates: fixture program (O(n²) body + Enforce O(log n)
budget) + TestClaim assertion + diagnostic structural validation + no
regression on T-LBP cementing + bootstrap regen + clippy + §1.8 #92
advancement.

Hard prerequisites STOP-and-PING: T-LAS Slice A landed (gates #88-#91) AND
T-LBP complexity-lens BEHAVIORALLY COMPLETE (gate #79). Worker does not
author against partial substrate.

Sibling demos #1953 (CRDT cost) + #1954 (memory-peak cost) share the same
hard-prerequisite + TestClaim shape pattern — could dispatch as 3 sequential
PRs or single multi-demo PR (worker's call at dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LAS Demos #1953 + #1954 — cost-basis sibling worker brief

Pre-staged sibling brief covering both cost-basis demos (CRDT cost basis +
memory-peak cost basis) per Director endorsement of T-LAS demos via direct
worker-brief path. Single brief for two demos because they share:
- Hard-prerequisite pattern (T-LAS Slice A + T-LBP cost-lens BEHAVIORALLY COMPLETE)
- TestClaim + Diagnostic structural validation shape
- apply_lens(cost, ...) Enforce mode

Sibling of #1952 brief (complexity-contract compile-error). Worker's call at
dispatch on multi-demo PR vs sequential PRs (Mgr ratification needed if going
multi-demo).

#1953 (CRDT) substrate per design §4.2 + cost-basis-declaration audit at
docs/audit/t-user-authored-cost-basis-discipline-worked-examples.md.
#1954 (memory-peak) substrate per design §4.3; STOP-and-PING if
Dimension<SymbolicCost> substrate (deferred to Dimensions sub-lane per Director
ratification at gunbc#828 #issuecomment-4395691775) not yet landed.

6 same-slice acceptance gates per demo + same STOP-and-PING discipline as #1952.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-CostLens — update Sub-issue from #1957 to #2141 (post-surgical-recreate)

PM executed Director's surgical-recreate ratification (gunbc#828
#issuecomment-4397693699) at 17:54:43Z: closed #1957, created fresh #2141 to
trigger pollAutoSpawn fresh-creation path. Worker fierce-ram-21 (#2153) spawned
on #2141.

1-line brief update per Director's queued-action commitment: brief now
references #2141 + cites surgical-recreate authority. #1957 closed-as-superseded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context canvas (β-extended substrate-shape question)

Director α-revised supersession at gunbc#828 #issuecomment-4400920572 elevated
β-extended path (introduce first-precedent .dag-side fold-over-realization-rows
+ name active-target authority shape) from slice-tier to canvas-tier.

Authored per Q-PAFS template:
- Substrate-state at HEAD grep-verified (Lens<C>.read no target-context;
  zero .dag-side fold-over-realizations precedent; 15+ lens instances using
  generic Lens<C>)
- Binary question: should .dag-side lenses receive target-context for
  target-keyed reading?
- Options matrix: (i) LanguageSpec param to fold; (ii) per-target lens
  instances [parallel-representation debt]; (iii) global accessor [REJECTED
  global-state anti-pattern]
- Mgr provisional preference: (i)
- Cross-cutting: cost.dag load-bearing; emission_provenance.dag secondary;
  other 13+ lenses target-agnostic

Framework discipline anchors per Director corrections:
- feedback_same_slice_dissolution_discipline
- feedback_parallel_representation_debt
- feedback_abstraction_layering (sibling canvas)

Sibling canvas (ε path): q-cost-composition-layering-canvas.md authoring
follows. Both canvases together address deeper cross-cutting axis: does
target-context belong .dag-side (β-extended) or emit-side (ε)?

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Cost-Composition-Layering canvas (ε substrate-shape question)

Sibling canvas to q-lens-target-context-canvas.md. Director α-revised
supersession at gunbc#828 #issuecomment-4400920572 elevated ε path (Rust-side
cost-composition wiring; preserves cost.dag PROXY) from slice-tier to
canvas-tier.

Authored per Q-PAFS template:
- Factoring claim: cost = (target-agnostic-shape SymbolicCost algebra) ×
  (target-specific-values per-primitive realization-cost data loaded Rust-side)
- Test against feedback_abstraction_layering (Director-named anchor at
  gunbc#828 c#4400921658): pure objective concepts × language-agnostic
  LanguageSpec × emit-side composition. Compliance test for each layer.
- Pro factoring (ε structurally honest): SymbolicCost algebra is target-
  agnostic at HEAD; Rust-side composition is natural home; #38/#39 substrate-
  already-aligned per Slice 1 finding.
- Con factoring (ε is parallel-representation debt): N parallel Rust-side
  compositions if multiple lenses need target-context; lens-framework
  abstraction stops at substrate boundary; future lenses hit same dilemma.

Mgr provisional reading: factoring honest for COST specifically; NOT
generalizable. ε right framing IF cost is the singular need + factoring
holds. If N>1 target-context-needing lenses surface, β-extended (option
(i) from sibling canvas) becomes the right path.

Director ratification ask: 3-way choice
  (ε) Cost-specific Rust-side composition; preserves cost.dag PROXY
  (β-extended option (i)) Lens<C> refactor for LanguageSpec parameter
  (both sequenced) ε now for cost; β-extended later if N>1

Framework discipline anchors:
- feedback_abstraction_layering (Director-named for this canvas)
- feedback_parallel_representation_debt
- feedback_same_slice_dissolution_discipline

Canvas-pair complete; sibling canvas + this canvas address the deeper
cross-cutting axis: target-context belongs .dag-side (β-extended) or
emit-side (ε)? Director ratification across both informs T-CostLens
follow-on slice + downstream lens architecture.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* WIP: R3 Substrate Mgr — lane through R3 close

* docs: ε ratified canonical for cost; β-extended deferred to N=2 — gate updates

Director ratification at gunb-ai/gunbc#2181 #issuecomment-... :
- (ε) RATIFIED standalone for cost composition (canonical-not-transitional)
- (β-extended option (i)) DEFERRED to N=2 trigger event (second lens with
  target-context need beyond cost)
- ("both sequenced") REJECTED as bridge-with-named-dissolution anti-pattern

Same-slice acceptance gates landed:

1. Q-Cost-Composition-Layering canvas: status updated from "ratification
   needed" → "Director-RATIFIED 2026-05-07 (ε standalone; canonical-not-
   transitional); PROPOSAL maturation pending"
2. Q-Lens-Target-Context canvas: status updated from "ratification needed"
   → "DRAFT/DEFERRED 2026-05-07; reopens on N=2 trigger event" (second lens
   with substantive target-context need; emission_provenance most likely
   candidate per cross-cutting analysis §3)
3. r3-program-plan.md gate-table rows #37 + #40 + #70: ε path ratified;
   close via Rust-side composition reading abstract SymbolicCost × per-
   primitive realization-cost in T-CostLens follow-on slice
4. r3-program-plan.md §10.3 T-CostLens-Composition row: ε ratified for
   #37/#40/#70; β-extended deferred per N=2 trigger
5. v3-lens-capability-register.md cost.dag row: ε disposition cited; #2175
   continues as cross-cutting umbrella tracker

Closed-system disposition per Director: if N=2 condition never fires,
β-extended never fires — structurally correct under closed-system design.

Framework discipline anchors honored:
- feedback_abstraction_layering: ε respects layering (objective concepts
  pure; target-specific values flow at emit time per Layer-3 honesty test)
- feedback_parallel_representation_debt: bounded to N=1; reopens at N=2
- feedback_same_slice_dissolution_discipline: ε ratified canonical, not
  transitional
- feedback_construction_over_ratchets: substrate-shape question answered
  structurally
- feedback_substrate_principle_audit: substrate-fact authored at canvas-
  tier; ratification follows P1 procedure

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvas inventory grounded in live src/v3/lenses/ registry

codex BLOCKING at gunb-ai/gunbc#2181 (sha 00551a80): Q-Lens-Target-Context
canvas inventory was "copied from expected lens set instead of live
src/v3/lenses/ registry"; emission_provenance trigger references not
grounded in live file content.

Same shape of error as 3 prior BLOCKING reversals (Q-Reification, S5
DeclarationRef, T-CostLens merge-content). Substrate-state-grep is being
treated as retrospective-correction rather than prerequisite. Tightening:
this is the 4th occurrence; should be hard-prerequisite-discipline going
forward.

Fixes:

1. Q-Lens-Target-Context inventory section: replaced approximate "15+
   lens instances" framing with exact `ls`-grep registry (15 .dag files
   listed by name), notes infer_helpers + lower_helpers are helper
   modules authoring shared structural fns rather than top-level lens
   instances.

2. emission_provenance.dag analysis grounded in HEAD file status header:
   STATUS = STRUCTURALLY TERMINAL; LENS-INSTANCE FIXTURE-BOUND; BEHAVIORALLY
   DEFERRED. `read` body is fail-closed Empty stub. Lens does NOT currently
   read target-context inside fold; producer-side instrumentation records
   target-specific entries consumed via standard framework. Reframed as
   "ungrounded at HEAD" rather than "POSSIBLY target-context need" —
   re-evaluates at producer-wiring landing.

3. Net finding: N=1 confirmed at HEAD (cost.dag only); N=2 is empirically
   open pending lens-completion cycles, NOT pre-claimable.

Plus non-blocking improvement: Q-Cost-Composition-Layering line 9 stale
`#issuecomment-...` placeholder replaced with concrete ratification
comment id `#issuecomment-4401584012`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): fix Director-ratification-ask typo + #37 gate-id clarification footnote

cursor APPROVE_WITH_COMMENTS at gunb-ai/gunbc#2181 (sha 4209eb7f) flagged 2
NON-BLOCKING items + 1 exploratory:

1. (NON-BLOCKING) Q-Cost-Composition-Layering line 69: `## Directorratification ask` → `## Director ratification ask` (whitespace typo)
2. (NON-BLOCKING) Q-Cost-Composition-Layering line 9 placeholder `#issuecomment-...`: ALREADY ADDRESSED in commit `db88b1004` (replaced with `#issuecomment-4401584012`)
3. (Exploratory) Gate #37 id `cost_lens_reads_target_realization` framing implies .dag lens body performs realization read; per ε ratification it's Rust-side composition consumer. Added clarifying footnote noting gate-id retention + Rust-side closure path; rename candidate post-follow-on-slice landing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — absorb PM canvas-review concerns 1-3

Director relayed PM canvas review at gunb-ai/gunbc#2068 c#4401627536:

Concern 1 (RESOLVED via grep-verify): empirical N=1 confirmation. PM ran
`grep -lc 'TypeRealization|CallableRealization|MethodTemplateContract|
target_realization|realization_cost|LanguageSpec' src/v3/lenses/*.dag`;
only cost.dag has 3 hits, all 14 others have 0 refs (including
emission_provenance.dag which I'd previously framed speculatively).

Net-finding §3 updated with grep result inline + "N=1 empirically grounded"
framing replacing speculative "secondary candidate" language. Empirical
basis for DEFERRED β-extended disposition strengthened.

Concern 2 (Option (ii) multiplier framing): per-target lens instances
replicate the entire Lens<C> authoring surface — N×M × 4 (carrier + monoid
sequential + branch + iterate) authoring overhead. Updated Con bullet to
reflect the multiplier explicitly: 3 targets × 1 cost lens × 4 = 12 authored
fns; grows to 36 if 3 lenses need target-context. Cites
feedback_parallel_representation_debt as the P2 framing.

Concern 3 (Option (i) threading cost quantification): replaced narrative
"threading cost is real but manageable" with quantified breakdown — ~15
signature changes + 14 ignore-parameter patterns + 1 consumer + cementing-
test revalidation. Helps future Director ratification at N=2 trigger event.

All 3 amendments are docs-only refinements; ε ratification at gunbc#2181
c#4401584012 unchanged. Strengthens canvas as durable substrate-shape
decision record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): canvases — collapse stale ratification-ask sections post-ratification

codex BLOCKING at gunb-ai/gunbc#2181 (sha be9a9c94): both canvases had stale
"Director ratification ask" sections after status headers were updated to
RATIFIED/DEFERRED. Per INVARIANTS P1 "Documentation Describes Live State" —
canvas internally presented both settled and unsettled authority.

Fixes:

1. Q-Cost-Composition-Layering line 69-76: "Director ratification ask"
   section collapsed to "Director ratification (RECEIVED 2026-05-07)" with
   ε ratified, β-extended deferred, "both sequenced" rejected. Three options
   recorded as historical with ratification cite. Eliminates the rejected
   "both, sequenced" line that conflicted with status-header "canonical-not-
   transitional" framing.

2. Q-Lens-Target-Context line 131-136: "Director ratification ask" section
   collapsed to "Director disposition (DEFERRED 2026-05-07; reopens on N=2
   trigger event)". Original ratification asks recorded as FROZEN; revisit
   at N=2 trigger event with then-current substrate-state grep. Eliminates
   live-now-ratify framing that conflicted with status-header DEFERRED.

Both canvases now single live authority — RATIFIED/DEFERRED dispositions,
no internal ratification-ask drift. Future re-ratification (Q-Lens-Target-
Context at N=2 trigger) refreshes options matrix at that point per
substrate-state-honesty discipline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Lens-Target-Context — separate live N=1 from reopen-only future N=2

openai-pro APPROVE_WITH_COMMENTS at gunb-ai/gunbc#2181 (sha be9a9c94): canvas
line 127 mixed live N=1 authority with speculative N=2 candidate in one
current-state cost count.

Per P1 Documentation Describes Live State + P2 single-authority metadata:
the live count at HEAD is `cost × 3 targets = 3 per-target instances` (× 4
authoring-multiplier per Option (ii) Con = 12 fns). The `emission_provenance
× 3` figure is a reopen-only future scenario that materializes only if
emission_provenance becomes the second real target-context lens at producer-
wiring landing time.

Updated to separate the two clearly: live count + reopen-only future
scenario marked separately. Aligns with the grep-verified N=1 finding
established earlier in canvas §3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* docs(briefs): T-CostLens worker brief — ε supersession header (γ retained as context)

PR #2181 merged at eff426de5 ratifies ε path canonical-not-transitional
for cost composition. Brief was authored under γ scope (.dag-side
Lookup<SymbolicCost> composition). Add binding ε supersession header at
top; retain γ section as historical context per single-authority
discipline. cost.dag stays PROXY under ε; composition is Rust-side
(abstract SymbolicCost shape × per-primitive realization values).

Authority: Director ratification at gunb-ai/gunbc#2181 #issuecomment-4401584012.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-Complexity-Composition-Layering canvas — DRAFT (factoring tested, ε precedent does NOT apply)

Director authorized canvas authoring at gunb-ai/gunbc#828 c#4402669133 as
parallel structure to Q-Cost-Composition-Layering (ε RATIFIED). Substrate-
grep on src/v3/lenses/complexity.dag at HEAD shows the factoring claim
DIFFERS from cost-lens:

- Cost-lens needed (target-agnostic shape × target-specific values)
  factoring → Rust-side composition (ε)
- Complexity-lens has NO target-specific axis; output is structural
  property of DAG topology + algebra-instance composition; substrate-
  native fully-on-.dag-side completion

Mgr provisional reading: ε precedent does NOT apply; complexity-lens
BEHAVIORAL COMPLETION is direct slice-tier substrate authoring (carrier
introduction follows SymbolicCost precedent + T-E-P P1 carrier
consumption). Director ratification ask: Q1 (factoring finding correct),
Q2 (slice-tier directly bypassing canvas), Q3 (fresh worker pin).

Cross-Mgr: Verification Mgr (#2075) pinged on v2-oracle snapshot capture
status (cross-cutting prerequisite for #1950/#1951 cementing dispatch).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): T-LBP complexity-lens substrate-completion worker brief (Q1/Q2/Q3 RATIFIED)

Pre-authored brief for complexity-lens BEHAVIORAL COMPLETION substrate
work per Director Q1/Q2/Q3 ratification at gunb-ai/gunbc#828 c#4402714255.

Three deliverables: carrier introduction (ComplexityCost / WorkSpan /
AsymptoticClass following SymbolicCost precedent) + lens widening
(complexity.dag PROXY → COMPLETE) + T-E-P P1 carrier consumption
(DescentEvidence / CallPattern / SubValueRelation for asymptotic
classification of recursive-call behavior).

Indirect-variant dependency surfaced as worker-grep concern at slice-
authoring time (T-E-P P1 Slice 5+ pending; eager-bat-178 stream).

Cementing test (#1950) is separate downstream brief; v2-oracle snapshot
ownership pending Q4 cross-Mgr ratification.

Worker pin: fresh-pool pick at dispatch time (NOT eager-bat-178 per
Director Q3 framing; NOT fierce-ram-21 busy with cost-lens ε).

Same-window-dispatch discipline applies post-canvas-merge (PR #2197).

Pre-authored vs pre-known discipline applied per
feedback_pre_known_vs_pre_authored_briefs.md memorialized 2026-05-08.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(briefs): rewrite complexity-lens brief consuming live design authority (codex BLOCKING fix)

Codex BLOCKING (3 findings) at #2199 sha 7a8bb6dc:
1. Brief authored against missing canvas instead of reconciling with
   docs/design-complexity-lens-behavioral-completeness.md (which exists
   at HEAD with comprehensive substrate spec)
2. Producer coverage treated as optional corpus scope; should be hard
   T-E-P-Producer-Broadening prerequisite
3. Stale/non-in-repo planning authority cited; should be r3-structure.md
   row 146 (T-LBP slice 1)

All three BLOCKING findings VALID — substrate-grep-before-authoring
discipline failure on my part (feedback_substrate_grep_before_authoring
already memorialized; violated own discipline).

Rewrite delegates carrier shape, dimension wiring, and consumer rewrite
to live design doc §§1.1-1.6 verbatim:
- §1.1 SymbolicCost — already at algebra.dag; no change
- §1.2 SizeVariable — display_name enrichment
- §1.3 work_dimension + span_dimension — two AnalysisDimension instances
- §1.4 AsymptoticClass + BoundedLattice instance
- §1.5 Certainty (cost-aware composition; no lattice)
- §1.6 cost_bound_to_symbolic projection
- §1.7 ComplexitySummary record + lens widening

T-E-P P1 hard prerequisite per design's authority discipline + r3-
structure.md row 146; STOP-and-PING if T-E-P P1 not COMPLETE at slice
authoring time. Authority cites updated to live r3-structure.md row 146.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas — DRAFT (canvas-tier P1 procedure per Q6 RATIFIED)

Director Q6 RATIFIED canvas-tier-required at gunb-ai/gunbc#828 c#4403163639
for PerfWithinBaseline TestPredicate variant authoring. Three substantive
substrate-shape questions resolved:

Q1 baseline shape: (a) literal-Int rejected as strict-mirror-of-CostBounded
defeats semantic load; (b) DeclarationRef-to-stored-data composes
LensOutputEquals + data X: SymbolicCost precedent at HEAD; (c) runtime-
fixture-injection over-authors. Mgr lean (b).

Q2 ComparisonOp composition: (i) reuse existing ComparisonOp via test-
runner-side resolution matches LensOutputEquals path; (ii) new relative-
op-set introduces parallel-representation debt. Mgr lean (i).

Q3 baseline-storage scope: (α) in-scope slice authors example data; (β)
out-of-scope variant-only slice + PB consumer authors baseline data
matches existing layering. Mgr lean (β).

Combined Mgr lean: Q1(b) + Q2(i) + Q3(β) — variant authored as
compositional extension; baseline-storage is PB consumer-tier work.

Cross-Mgr: PB Mgr #2138 worker (crisp-swift-433) holds dispatch on #2204
land; T-Tier3-Dissolution #2085 R-4 prereq encoded.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas REVISED (supersedes wrong-shape original)

Director disposition at gunb-ai/gunbc#828 c#4403265220 authorized
supersession after BLOCKING at PR #2209 c#4403246233 verified VALID:
original canvas conflated symbolic SymbolicCost (cost-lens substrate)
with wall-clock measured median/p99 baseline (T-Tier3 perf gate
substrate per docs/r3-structure.md:225 + :461 Director-locked 2026-04-28).

Revised canvas frames as two-path ratification:
- P1 author full perf-budget substrate in-R3 (multi-slice; pattern-5
  genuinely-novel substrate-fact-introduction)
- P2 explicitly post-R3 per Director-locked recommendation (zero in-R3
  effort; structural close per r3-structure.md:461 'R3 deliverable is
  structural close; perf is downstream')

Mgr lean: P2 — Director-locked recommendation explicit; trigger-
condition ('someone authors perf-budget claim with concrete numbers
and tooling') not met; R3 horizon constraint argues against multi-
slice perf-budget substrate adding to 5-orthogonal-dependency picture.

Original canvas at q-perf-within-baseline-canvas.md retained with
SUPERSEDED-BY header per durable-decision-record discipline.

5th discipline-failure of 2026-05-08 cycle: substrate-grep verified
substrate-precedent but missed consumer-side requirement at canonical
authority doc; Director self-flagged symmetric two-axis verification
gap; canvas-finding-taxonomy needs precondition 'consumer-side
requirement grep-verified at canonical authority doc'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-PerfWithinBaseline canvas-revised — correct trigger-condition framing per Director c#4403297623

Director caught second-axis grep failure on revised canvas: my P2
reasoning #1 ("path-trigger condition for P1 is not met") was
structurally wrong. Existing tooling at HEAD substantially meets the
Director-locked 2026-04-28 trigger-condition ("someone authors the
perf-budget claim with concrete numbers and tooling"):

- docs/briefs/r3-pb-tier3-perf-budget-worker.md
- docs/audit/c1-tier3-perf-budget-readiness-matrix.md
- src/v3/compiler/benches/tier3_mirror_perf.rs
- docs/audit/c1-tier3-baseline-capture-procedure.md
- docs/audit/c1-r3-canonical-bench-host-decision-matrix.md

Plus thresholds (≤2× median, ≤5× p99) + capture discipline (N=3 min,
N=5 preferred) + canonical bench host option matrix.

P1 is bridging existing tooling to substrate (compositional-extension),
NOT multi-slice greenfield genuinely-novel pattern-5 as originally
framed. Smaller scope than canvas-finding-taxonomy pattern 5 implies.

Path-call genuinely depends on PB Mgr's R-3 (canonical CI bench host)
+ R-7 (tier3_baseline.json baseline-capture path) decisions per their
audit response at c#4403059897. Path-call DEFERRED to cross-Mgr
coordination outcome with PB Mgr (#2074); Substrate Mgr surfaces with
corrected framing this turn.

Sixth discipline-failure of cycle (mine, second-axis grep gap on
existing-tooling state); same-class as Director's first-axis grep gap
on consumer-side requirement at the prior turn. Memorialized as
two-axis verification discipline anchor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-ValueBody-Drift-Resolution canvas — DRAFT (codegen-generation lean)

D1 substrate-shape question per Q-ValueBody-Isomorphism RATIFIED at
gunb-ai/gunbc#828 c#4403972737. Variant-inventory readiness input from
PR #2218 (merged 2026-05-08) confirms drift: Rust 5 variants vs
substrate 3 constructors; asymmetry on Scalar+List Rust-only +
Map payload-parity-with-semantic-gap.

Two-axis verification at HEAD:
- Substrate-precedent: codegen tooling exists (regen_bootstrap_emit;
  5 _generated.rs files; regen_bootstrap binary). Pattern-3 strict-
  mirror codegen extension applies; no pattern-5 P1 procedure.
- Consumer-side requirement: V1 worker brief explicitly names mirror-
  parity-vs-codegen-generation as D1 path-pair.

Mgr lean: (b) codegen-generation. Path (a) mirror-parity perpetuates
parallel-representation debt; (b) dissolves the dual-taxonomy class
by construction (substrate canonical, Rust codegens). Map dup-key gap
handled via (ii) Rust-side post-codegen wrapping (substrate stays
minimal).

Director ratification ask: D1 (b) + D1-followup (ii).

Carrier slice path post-ratification: extend regen_bootstrap_emit;
add Scalar+List constructors to substrate; regen + remove hand-Rust
enum; handle Map dup-key per ratified followup. Worker pin fresh-pool
per same-window-dispatch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(proposals): Q-ValueBody-Drift-Resolution canvas amend authority cite (codex BLOCKING fix)

Director ratified (α) amendment-PR at gunb-ai/gunbc#828 c#4404398425
post-codex-BLOCKING at PR #2222 c#4404360699.

Canvas originally cited regen_bootstrap_emit.rs as codegen authority
for ValueBody runtime mirror; corrected to scripts/regen_runtime_mirrors.py
which is the substrate→Rust runtime-mirror generator (reads substrate.dag,
emits dag_scalar_generated.rs etc.). regen_bootstrap_emit.rs is a
separate codegen system that generates bootstrap_generated.rs (bootstrap
parser/lower compile snapshot).

D1 (b) codegen-generation ratification UNCHANGED; only authority-path
cites corrected. Carrier slice path at canvas §6-step plan now references
correct runtime-mirror generator. Canvas inline notes mark amendment
location for future-reader audit trail.

8th cycle-tier framing-failure (Mgr-tier; same fine-granularity gap
parallel to Director-tier failure at c#4404256128). Two-axis verification
discipline applied at insufficient granularity (verified codegen-tooling-
exists but didn't disambiguate against bootstrap-vs-runtime-mirror systems).

Discipline anchor refinement: when canvas cites a codegen system /
tooling / authority path, identify the SPECIFIC generator/handler for
the target-file-class. Don't accept 'tooling exists' at coarse granularity.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: reconcile cross_target_coverage emission_path_projections post-population drift

cross_target_coverage.dag:179 + sg0_census_test.rs:355 still described
emission_path_projections as `(empty data state)` / `== []`, but the
data block at cross_target_coverage.dag:186 is populated with 41 Phase-1
rows (Rust 13 / Python 16 / Go 12). Update both comment sites to reflect
the populated state. P1 Modeling Faithfulness — comment-drift only, no
behavior change.

Surfaced by gentle-newt-665 R3 Debt-Paydown ROADMAP audit at gunb-ai/gunbc#2062;
absorbed into Substrate lane (#1939) per L6 emission_path_projections
carrier ownership.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix: pad cross_target_coverage.dag comment to preserve byte offsets

Previous comment edit changed line 179 length 76→75, shifting
SourceSpan byte offsets in bootstrap_generated.rs by 1 and breaking
regen_bootstrap --verify in CI. Pad with one extra dash to restore
original 76-char length; comment text intent unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* WIP: R3 Substrate Mgr — lane through R3 close

* fix(canvas): clarify Source param doesn't carry subject identity (P2)

Reviewer flagged on PR #2333 inline review: parametric form
WorkflowObservationAnchor<BehaviorId, TimingMeasurement> would create
redundant subject-identity authority if TimingMeasurement carries
subject identity (P2 violation). Clarify Q-WAD-S2-Anchor (b) so Source
parameter is observed-payload-only; subject identity is owned solely
by Subject parameter.

In worker's actual PR #2360 shape, TimingMeasurement is variant-typed
report state (Observed { nanoseconds } | Missing | ...) and does NOT
carry subject identity — concern is theoretical there but worth
clarifying canvas language for clean Director ratification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): correct fail-closed analysis for LensEnforcement.violates signature

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:90):
LensEnforcement.violates signature is (Budget, Budget) -> Bool per
src/v3/std/lens_application.dag:100 — does NOT see raw Output.
Original canvas claim 'fail-closed: violates = Output != Observed'
was structurally wrong. Updated:

- (a) clarified: projection step (Output → Budget) must fabricate
  violating Budget for non-Observed variants (option (a)(i)) OR
  substrate-extend the violates signature (option (a)(ii)) which is
  canvas-tier and cascades across all lens consumers.
- Added option (c) reflecting worker tidy-raven-610 PR #2360 shape:
  Output folded into TimingMeasurement carrier directly, Budget
  projection handles fabrication naturally.

Status: shape ratification still pending Director per #828 c#4412018726.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): add 🟢 dissolution classification to TimingObservationOutcome variants

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:86):
proposed sum has no 🟢/🟡/🔴 dissolution receipt per INVARIANTS P5 /
modeling-discipline.md §coproduct dissolution. Worker could land
unclassified coproduct.

Added 🟢 GREEN (terminal) classification to both option (a)
TimingObservationOutcome and option (c) folded TimingMeasurement —
four variants exhaust externally-attested observation states; no
richer-source-extraction path exists at the workflow-observation
boundary. Worker .dag declarations MUST carry the 🟢 marker comment
per modeling-discipline.md:132.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): correct Q-WAD-S2-Placement to src/v3/std/ (not dsl/std/)

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:108):
recommending dsl/std/timing_lens.dag conflicts with src/v3/std/lens.dag:17-21
v3-only-carriers convention. Worker would land substrate in wrong layer.

Earlier canvas claim 'T-LBP / T-CostLens / T-LAS lens carriers all live in
dsl/std/' was factually wrong — they live in src/v3/std/ and src/v3/lenses/.
Corrected to src/v3/std/timing_lens.dag throughout. Worker PR #2360 already
placed at correct path; canvas now matches.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): make six gate #55 invariants concrete fields on anchor (P2)

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:75): the
recommended <Subject, Source> parametric shape only named type params
and didn't assign digest/producer/observer/prover/timestamp/run-id/
report-state to a single carrier — gate #55 facts wouldn't flow forward
under P2 boundary discipline.

Fixed: Q-WAD-S2-Anchor (b) now shows explicit six-invariant field
schema as concrete fields (subject/artifact_digest/producer_id/
observer_id/prover_id/attached_at/workflow_run_id/observation_outcome)
with Subject + Source as type parameters for variable parts only.
Notes worker tidy-raven-610 PR #2360 flat shape is already
gate-#55-compliant at the field level; convergence path is adding
type parameters to the flat shape (minimal rework).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): correct convergence assessment — invariant 5 split-authority in worker shape

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:96): claiming
worker's flat anchor shape gate-#55-compliant drops invariant 5
(observation_outcome / report-state) from the anchor. Worker's
TimingMeasurement variants carry report-state on the payload, not on
the anchor — splits P2 single-authority for invariant 5.

Fixed: convergence assessment now correctly identifies 5/6 invariants
on anchor + invariant 5 split. Path requires TWO edits not one:
(1) add <Subject, Source> type parameters to anchor; (2) add
observation_outcome: ObservationOutcome<Source> field to anchor itself.
This collapses Q-WAD-S2-Output (c) folded shape back to (a)(i)
separate-projection — trade-off documented (single-authority preserved
at cost of one extra type).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): reject (a)(i) Budget fabrication per P3/C-8 fail-closed (canvas:118)

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:118):
recommending projection fabricates violating Budget for non-Observed
states violates INVARIANTS P3/C-8 fail-closed discipline — erases
typed Missing/Ambiguous/Stale failure evidence into a plausible budget
value. Consumers downstream of violates can't distinguish 'budget
exceeded by observed value' from 'no observation existed'.

Fixed: (a)(i) REJECTED with explicit P3/C-8 rationale. Added (a)(iii)
Result-typed projection with auto_violate_on_left bit — smaller
substrate change than (ii) full-signature-extension. Director-tier
disposition still required for (ii) or (iii); (i) no longer a viable
path.

Convergence implications for worker PR #2360 + canvas (c) folded
shape need re-assessment in next pass — (c) sidesteps the violates
signature collision but invariant 5 split-authority (per canvas:96
fix in 960a03f98) means observation_outcome belongs on anchor not
payload, which then re-introduces the violates-Output-visibility
question via ObservationOutcome typing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): propagate (a)(i) rejection across all recommendation/status refs

Earlier commit 594a4df9c rejected (a)(i) Budget fabrication per
P3/C-8 inline review. Updated remaining 3 refs to reflect:
- Q-WAD-S2-Anchor convergence trade-off line
- Q-WAD-S2-Output recommendation: now (a)(ii)/(a)(iii) pending Director
- Q3 (c) Status line: Director call is (a)(ii)/(a)(iii) vs (c)

(a)(i) is REJECTED throughout; Director-tier LensEnforcement substrate
change unavoidable for fail-closed-correct anchor-side report-state
carriage.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): correct invariant-6 claim — fail-closed needs LensEnforcement substrate-extension

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:91): claim
'all six invariants concrete fields on anchor' was wrong — invariant 6
(fail-closed) explicitly lives at LensEnforcement.violates layer, not
on the anchor. Without Q-WAD-S2-Output (a)(ii)/(a)(iii) substrate-
extension landing, gate #55 cannot close on 5/6 — would let consumers
attach observation facts without fail-closed evidence (P2/P3 violation).

Fixed: clarified 5/6 invariants on anchor + invariant 6 dependency on
Director-tier LensEnforcement substrate-extension. Gate #55 closure
explicitly cross-linked to canvas:118 escalation thread.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): Output (a) variants wrap Source not TimingMeasurement (P2)

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:112):
Output (a) Observed{value: TimingMeasurement} would wrap the
report-state-bearing TimingMeasurement type, duplicating
identity/attestation/report-state with the anchor's invariant 5
authority. Reopens P2 split-authority.

Fixed: Observed wraps payload-only Source (e.g., TimingPayload {
nanoseconds: Int }), NOT TimingMeasurement. Per Q-WAD-S2-Anchor
revised convergence: subject identity / attestation / report-state
on anchor; payload carries only observed-value-when-present.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): split gate #55 + canonicalize TimingPayload (parent BLOCKING b526a26f)

Reviewer flagged 2 BLOCKING on PR #2333 parent review at sha b526a26f:

Finding 1 (gate #55 mixes anchor-fact + fail-closed): added gate #55a/#55b
split — #55a = anchor carrier landed (worker scope); #55b = LensEnforcement
substrate-extension landed across all lens consumers (canvas-tier separate
dispatch, owner: Substrate Mgr).

Finding 2 (TimingMeasurement overload): added Naming canonicalization
section to Carrier inventory. TimingPayload = observed-value-only;
WorkflowObservationAnchor = observation record; ObservationOutcome = report
state; TimingObservationSet = lens C (per Q1 ratification). Earlier
TimingMeasurement references deprecated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): rewrite Carrier inventory to reflect Director ratification of worker shape

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:35): old
carrier inventory still said TimingMeasurement owns subject identity +
observer attestation, contradicting revised anchor authority. Same-day
Director re-ratification at #828 c#4412301889 reversed the canvas (b)
recommendations and ratified worker tidy-raven-610's shape as-shipped:

- TimingMeasurement = Observed | Missing | Ambiguous | Stale
  (carrier-as-report-state; owns invariant 5 via variants)
- WorkflowObservationAnchor = timing-specific concrete fields
  (Q-WAD-S2-Anchor (a) ratified; owns invariants 1-4)
- TimingObservationSet = aggregation collection
- Lens<TimingMeasurement> per-observation

Fixed: rewrote Carrier inventory to reflect Director-ratified shape;
explicit invariant ownership (anchor: 1-5; LensEnforcement: 6 via
gate #55b separate dispatch). TimingPayload canonicalization (which
contradicted Director ratification) removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(canvas): resolve option (c) Pro/Con contradiction on signature collision

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:137):
option (c) Pro line said 'avoids violates signature collision entirely'
but lines 135/139 routed back to (a)(ii)/(a)(iii) — internal
contradiction; fail-closed obligation under P3/C-8 still ambiguous.

Fixed: rewrote (c) Pro/Con honestly — Pro = state-space discipline
(per Director's ratification reasoning); Con = does NOT sidestep
violates signature collision, still requires substrate-extension
path. Status updated to reflect Director ratification at #828
c#4412301889: (c) carrier shape ratified for worker scope (#55a);
LensEnforcement substrate-extension disposition (#55b) still pending
between (a)(ii) and (a)(iii).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(v3): LensEnforcement.auto_violate_on_left for observation-driven lenses

Per Director ratification at gunb-ai/gunbc#828 c#4412884371 + re-confirmation
at c#4413159089: extend LensEnforcement<Output, Budget> with additive
auto_violate_on_left: Bool field for observation-driven lens classes
(T-Workflow-As-Data Slice 2 timing-lens et seq.).

Substrate semantics: when Output is Result-typed (e.g.,
Result<Observed, ObservationFailure> for timing), runtime checks the
bit before calling project; on Result-Left + bit=true, enforcement
violates without fabricating a Budget value at the projection
boundary. Preserves typed failure evidence (Missing/Ambiguous/Stale/
Unobserved) per INVARIANTS P3/C-8 fail-closed discipline.

Backward-compatible additive: existing structural-static lenses
(complexity, cost, T-LAS) set the bit to false; bit is inert when
Output is not Result-typed. Updated complexity_enforcement
declaration + hand-Rust LensEnforcement struct mirror.

Closes §1.8 ledger #55 sub-gate b (LensEnforcement substrate-extension
prerequisite for fail-closed-correct enforcement on non-Observed
report states); enables T-Workflow-As-Data Slice 2 worker
(tidy-raven-610 #2359) to revise PR #2360 against the ratified
Result-typed Output shape.

Canvas authority: docs/briefs/r3-substrate-t-wad-slice-2-timing-lens-canvas.md
§"Question 3 (Q-WAD-S2-Output)" + Gate #55 closure-predicate split.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Revert "feat(v3): LensEnforcement.auto_violate_on_left for observation-driven lenses"

This reverts commit 5ec59209d1c561788a4f6f686d8d1f62daf086ef.

* fix(canvas): Q-WAD-S2-Anchor recommendation aligned to Director ratification of (a)

Reviewer flagged BLOCKING on PR #2333 inline review (canvas:99): canvas
still recommended (b) generic anchor after Director ratified (a)
timing-specific. Competing WorkflowObservationAnchor authorities = P2
violation.

Fixed: Q-WAD-S2-Anchor recommendation rewritten to reflect Director
RATIFIED (a) per #828 c#4412301889 + c#4413322671. Mgr-tier preliminary
(b) was over-engineered (chased hypothetical second-consumer
parameterization). Invariant 5 split-authority concern resolved at
LensEnforcement layer per (a)(ii) full-signature extension (Director
c#4413284764) — violates pattern-matches Output variants directly,
no observation_outcome projection wrapper needed.

Co-Authored-By: Claude Opus 4.7 …
briansrls added a commit that referenced this pull request May 14, 2026
…#88)

Register the new EXPECTED_HAND_AUTHORED_TEST path in §SG-0 hand-authored
integration test receipts per Dispatch-Discipline Mechanism (b).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
Pairing cited gate #92 demo brief; executor brief r3-v-t-lens-application-surface-
execution-split-worker.md owns §1.8 gates #88–#91 incl. lens_application_carrier_landed.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
…ace) (#3125)

* test(T-LAS): CI ratchet for §1.8 gate #88 lens application carriers

- Integration tests lock EnforcedApplication (3 typarams, 5 fields) and
  IntrospectApplication (1 typaram, 3 fields) on generated_full_bootstrap_dag
- SG-0: register new hand-authored test module (sorted after t_las_*)
- r3-program-plan: note harness on row #88; align row #90 with Projected

PR checklist (census net +1): include in PR body verbatim:
SG-0 hand-path delta: +1
SG-0 pairing: (c) substrate dispatch receipts docs/briefs/r3-substrate-t-las-demo-complexity-contract-compile-error-worker.md

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: prepend SG-0 PR-body pairing for census +1 (#3125)

PR #3125 edits sg0_census_test.rs (+1 EXPECTED_HAND_AUTHORED_TEST) but the GitHub PR
description lacked required SG-0 hand-path delta + pairing, failing the CI job.
ci.yml merges scripts/ci-merge/sg0-pr-body-append.<n>.txt before the discipline gate.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(INVARIANTS): P5 receipt for t_lens_application_carrier_test (gate #88)

Register the new EXPECTED_HAND_AUTHORED_TEST path in §SG-0 hand-authored
integration test receipts per Dispatch-Discipline Mechanism (b).

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: align SG-0 pairing #3125 brief with Slice A gates #88–#91

Pairing cited gate #92 demo brief; executor brief r3-v-t-lens-application-surface-
execution-split-worker.md owns §1.8 gates #88–#91 incl. lens_application_carrier_landed.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls deleted the claude/blue-team-sdlc-review-SaC9P branch June 1, 2026 18:41
gunbai-bot Bot pushed a commit that referenced this pull request Sep 13, 2026
… SupplierHypothesis.

The roster is executed today only by the identity-join witness; §3c requires the later consumers and their triggers beside the list.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 13, 2026
Private #88 is closed; name strategy.ci_compute_offer_catalog (#113) and SupplierHypothesis, and enroll the row on census_closure_frontier so dissolution can see the trigger.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

2 participants