Skip to content

zesty-moth-157 - #893

Merged
briansrls merged 9 commits into
mainfrom
session/zesty-moth-157
Apr 26, 2026
Merged

briansrls merged 9 commits into
mainfrom
session/zesty-moth-157

Conversation

@briansrls

@briansrls briansrls commented Apr 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Records the substrate-side disposition for the R2 Impossible-Bugs
unenumerated-effects worker brief STOP (path (ii) confirmed). After
the earlier in-source comment edits tripped regen_bootstrap --verify
on bootstrap_generated.rs SourceSpan drift (114 spans in effects.dag,
non-uniform shifts, no host cargo to regen), this PR was pivoted to a
docs-only scope: the full disposition lives in
docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md
and the source comment edits + parse-corpus manifest update were
reverted back to f462b0df8.

Net change in this PR: one new file under docs/briefs/. Zero
source edits. No regen required. No DB-8 risk.

Cites:

What the brief covers

Read docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md
for the full text. Headline:

  • Authority rule (per Modeling reply on session/lively-ferret-24 · lively-ferret-24 #856): taxonomy naming is
    not the issue; authority is. A named taxonomy is acceptable only as
    a mechanically derived normalized view over structural signature
    facts.
  • Three-surface split (per session/lively-ferret-24 · lively-ferret-24 #856 supplementary audit):
    1. Positive signature-shape candidates
      (dsl/std/algebra.dag typed collection / partial-function ops).
    2. Retained normalized transport projection — OperationEffect /
      EffectShape / WorkflowEffect etc., consumed by
      idempotency.dag, parallelism.dag, two native Rust mirrors,
      and three lane2 tests as a compatibility bridge pending the
      signature-shape lens.
    3. Declared parallel authority — side_effects taxonomy + extdeps
      idempotent / readonly modifiers + check_modifier_vs_derivation,
      retained only temporarily; retire cross-surface together at the
      lens trigger.
  • Path (ii) receipt: dsl/extdeps/llm/openai.dag:92-110,
    dsl/extdeps/llm/anthropic.dag:104-124,
    dsl/extdeps/github/auth.dag:13-24 are the existence-proofs that
    full signature-shape coverage is not true today.
  • No-extension rule: coverage gaps must surface as
    structural-coverage-gap diagnostics from the future signature-shape
    lens, NOT as new variants on any taxonomy.
  • Single dissolution trigger: signature-shape effects lens lands
    at src/v3/lenses/effect_enumeration.dag per gunbc Director #808 Slice §1; the
    four normalized-view consumers re-anchor onto its structural fact;
    declared parallel authority retires cross-surface.

Why doc-only (DB-8 / regen note)

Earlier commits on this branch (4d0e5bfc2, b1419b8f6,
9f72e51ad) stamped the same disposition into the headers of
src/v3/std/effects.dag, dsl/std/behavioral.dag, and
src/v3/lenses/idempotency.dag. Comment-only edits, no structural
change. They tripped two CI gates:

  1. SG-2 parse-corpus snapshot — the per-file row in
    src/v3/compiler/tests/integration/parse_corpus_manifest.txt
    shifted; refreshable manually (c7e261fa5 did so).
  2. regen_bootstrap --verify — bootstrap_generated.rs records
    per-Declaration SourceSpan::new(file, start, end) byte ranges,
    and effects.dag has 114 such spans in that file. The header
    additions shift those byte ranges non-uniformly (multiple insertion
    points → different deltas per declaration). Regen requires cargo,
    not available in the worker sandbox. Manually patching 114 spans
    without a runnable verifier is too risky.

Per the prior environment-blocker on this PR
(#893 (comment)),
option (3) was: "revert the .dag edits and carry the disposition only
in the PR body / inbox replies (zero source-file change PR)"
. This
commit takes that option, refined slightly: the disposition lives in
a docs/briefs/ markdown so it remains a citable, reviewable artifact
rather than only in PR text.

When host-regen capacity exists, restamping the same wording into the
three .dag headers is mechanical and span-only; the brief stays as
the canonical reference.

Out of scope

  • Implementing the signature-shape effects lens (gunbc Director #808 Slice §1).
  • Re-anchoring the normalized-view consumers onto the future lens.
  • Closing the path (ii) P1 bypasses (extdeps typed-primitive-consumption
    lane / session/proud-gull-252 · proud-gull-252 #867 territory).
  • Restamping the disposition into .dag headers (deferred until
    host-regen capacity exists).

The paused worker (valiant-lynx-650) is not unpaused by this PR;
the signature-shape lens is the unblock and that is a separate
dispatch.

Test plan

  • v3 CI passes (no source change → no parse-corpus / regen drift)
  • ci passes
  • fmt passes
  • self_host_ratchet passes / skips as appropriate

🤖 Generated with Claude Code

Copy link
Copy Markdown
Contributor Author

Manager review for #868 dispatch:

Good direction: this PR correctly narrows OperationEffect / EffectShape and OperationBehavior.side_effects to normalized / metadata surfaces, names #856 + #857 + #808, preserves the no-new-variants discipline, and keeps the P1 bypasses as structural-coverage-gap receipts rather than extending the taxonomy.

Before flipping ready, please close three gaps:

  1. Fill the PR body. Current body is the dashboard default. It needs to cite session/lively-ferret-24 · lively-ferret-24 #856, session/lively-wren-457 · lively-wren-457 #857, gunbc Director #808, and the paused worker brief STOP; summarize the path (ii) receipt; list the retained normalized-view consumers; and include DB-8/fixed-point/test disposition.

  2. Consumer re-anchor / bridge disposition. The dispatch asked for idempotency/workflow consumer re-anchor, or the smallest explicit migration bridge if same-PR re-anchor is too large. This PR currently documents the future re-anchor but does not implement one or explicitly scope a bridge. If this is intentionally a documentation-only bridge, state that in the PR body with the exact consumers still on the normalized view and the dissolution trigger.

  3. Check terminology in behavioral.dag. The comment says side_effects retires together with declared idempotent / readonly modifiers. If those modifiers are not actually declared in dsl/std/behavioral.dag, make clear this is cross-surface retirement with src/v3/std/effects.dag::check_modifier_vs_derivation, not local behavioral-schema retirement.

Keep this lane focused: do not absorb #867’s extdeps typed-primitive fixes here. The current split is right.

@briansrls briansrls mentioned this pull request Apr 26, 2026
…patibility views, name dissolution trigger

Re-anchors documentation/comment authority for the closed-system effect
escalation (substrate inbox #856, forwarded from R2 Impossible-Bugs #857;
worker brief STOP path (ii) at
docs/briefs/r2-impossible-bugs-unenumerated-effects-worker.md; design
doc PR #808). No structural / semantic changes — comment-only.

- src/v3/std/effects.dag: top-of-file 🟡 NORMALIZED COMPATIBILITY VIEW
  banner + re-stamped IdempotentShape/BreakingShape/OperationEffect/
  derive_effect_shape comments. Names the dissolution trigger
  (signature-shape effects lens at src/v3/lenses/effect_enumeration.dag
  per #808 Slice §1) and forbids extending the variant set to absorb
  the live coverage gaps (extdeps openai/anthropic JSON-bypass,
  github/auth modeled-fact discard).
- dsl/std/behavioral.dag: narrows OperationBehavior.side_effects /
  SideEffects taxonomy as **extdeps / interface contract metadata**,
  explicitly NOT closed-system effect-proof authority. Names the same
  dissolution trigger; forbids extension to cover P1 bypasses (per
  T-Modeling reply on #856).
- src/v3/lenses/idempotency.dag: notes the lens consumes a normalized
  compatibility view, not the closed-system structural fact. Full
  re-anchor to signature-shape lens is its own worker scope.

Path (ii) receipt (full signature-shape coverage NOT true today):
- dsl/extdeps/llm/openai.dag:92-110 ChatCompletion (messages: Json,
  JSON-path output) — method+path normalization cannot derive its
  effect class; signature-shape lens has no foundation to read.
- dsl/extdeps/llm/anthropic.dag:104-124 Messages — same JSON-bypass.
- dsl/extdeps/github/auth.dag:13-24 github_token — returns
  { token: Secret }, discards modeled scopes/expires_at; richer fact
  surface is not present in the return shape.

Retained normalized view + consumers:
- View: src/v3/std/effects.dag {OperationEffect, EffectShape,
  WorkflowEffect, derive_op_effect, derive_effect_shape, compose_effects,
  lane2_workflow_idempotency_report, modifier-falsification path}.
- Consumers (all read this as a normalized projection, no new
  authority added by this PR):
  - src/v3/lenses/idempotency.dag (Lane 2 Stage 2b dispatch)
  - src/v3/lenses/parallelism.dag (Lane 2 Stage 2e dispatch)
  - src/v3/compiler/src/workflow_idempotency.rs / workflow_parallelism.rs
    (native Rust mirrors)
- Dissolution trigger (single, named): signature-shape effects lens
  lands at src/v3/lenses/effect_enumeration.dag per #808 Slice §1; the
  re-anchor of consumers onto its structural fact is the dedicated
  worker scope, NOT this PR. Modifier falsification
  (check_modifier_vs_derivation, declared_idempotent / declared_readonly
  inputs) retires together with the declared modifiers it cross-checks.

No new hand-authored effect taxonomy is introduced. No new variants on
EffectShape / IdempotentShape / BreakingShape / SideEffects.

DB-8 / fixed-point / test disposition:
- Comment-only edits to .dag files shift SourceSpan byte offsets
  recorded in src/v3/compiler/src/bootstrap_generated.rs, so stage0
  regen is required pre-merge:
    ./scripts/regenerate-stage0.sh
  followed by check-stage0-freshness verification. DB-8 fixed-point
  must converge bit-identically — pure comment shifts in source
  positions only; no structural / type / connective change.
- No test coverage change. Existing lane2_stage_2a_effects_smoke /
  lane2_stage_2b_db18_test / lane2_stage_2e_parallelism_test exercise
  the unchanged consumer wiring and continue to apply.
- Regen could not run inside this session worktree (no host cargo);
  flagging here so substrate-host regen runs before merge. If regen
  surfaces non-trivial drift beyond span-shift, that itself is a STOP.

Cites:
- substrate inbox escalation #856 (R2 Substrate)
- R2 Impossible-Bugs lane #857 (paused worker valiant-lynx-650)
- design doc PR #808
  (docs/briefs/t-impossiblebugs-unenumerated-effects-design.md)
- worker brief STOP path (ii)
  (docs/briefs/r2-impossible-bugs-unenumerated-effects-worker.md)

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

Copy link
Copy Markdown
Contributor Author

Additional manager note from Modeling input on #856:

Please incorporate this authority rule into the PR body/disposition: taxonomy naming is not the issue; authority is. OperationEffect / EffectShape and OperationBehavior.side_effects can remain only as mechanically derived normalized views over structural signature facts. If a primitive must declare the tag because signature shape cannot derive it, that tag is parallel authority and should retire or become a structural-coverage-gap diagnostic.

For this PR specifically, that means the side_effects wording should be stronger than "metadata not proof" unless you can show derivation: classify it as declared parallel taxonomy retained only temporarily, with retirement/dissolution tied to signature-shape derivation or gap diagnostics.

…ot local

Manager review on PR #893 flagged that the dissolution-trigger comment
could be misread as local-schema retirement. The `idempotent` /
`readonly` modifiers are NOT declared in dsl/std/behavioral.dag — they
live on extdeps service operations and are cross-checked by
src/v3/std/effects.dag::check_modifier_vs_derivation. Reword to make
the cross-surface retirement explicit: this taxonomy + the extdeps
modifier declarations + the cross-check all retire together when the
signature-shape effects lens lands.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…arallel authority retained only temporarily

Manager review on PR #893 (incorporating Modeling input on #856) asked
for stronger language than "metadata not proof": the authority rule is
that a named taxonomy is acceptable only as a mechanically derived
normalized view, and `side_effects` does not meet that bar today
(hand-declared, no consumer reading it as a derived projection).

Reword the top-of-file note to:
- State the authority rule explicitly (taxonomy naming is not the
  issue; authority is — derived normalized view OK, hand-declared
  parallel authority not OK).
- Classify `side_effects` / `SideEffects` as declared parallel
  authority retained only temporarily (extdeps contract metadata
  pending the signature-shape lens), not as a permanent metadata
  layer.
- Keep the existing cross-surface retirement disposition (extdeps
  modifier declarations + check_modifier_vs_derivation retire
  together at the lens trigger).

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

Copy link
Copy Markdown
Contributor Author

Additional scope refinement from #856 supplementary audit:

Please make the PR body distinguish the three surfaces explicitly:

  1. Positive signature-shape candidates: typed collection/partial-function primitives where reads return derived values and updates return modified receiver/resource values.
  2. Retained normalized transport projection: OperationEffect / WorkflowEffect / method-path derivation consumed today by idempotency.dag, native workflow/idempotency/parallelism mirrors, and tests. This is compatibility bridge territory, not authority.
  3. Declared taxonomy/modifier retirement or gap evidence: readonly / idempotent modifiers, OperationBehavior.side_effects, non-REST/resource contracts, and JSON/path-extraction extdeps that cannot derive from signature shape today.

This PR can remain a bridge/documentation lane if implementation re-anchor is too large, but it must state the bridge explicitly: current consumers, why they remain on normalized projection for now, and exact dissolution trigger when the signature-shape effects lens/query surface lands.

@briansrls

Copy link
Copy Markdown
Contributor Author

Environment blocker — stage0 regen cannot run in this worker sandbox

Per dashboard ping on #868: posting the explicit blocker rather than pushing a regen commit, because regen is not actually runnable here.

What I tried:

  • cargo fmt --all --check → /bin/bash: cargo: command not found
  • which cargo / type cargo / ls ~/.cargo/bin → not present
  • which colima → not present
  • bash -ic 'which cargo' → also fails (no interactive aliases)

Why this matters for this PR: the three .dag comment edits shift SourceSpan byte offsets that src/v3/compiler/src/bootstrap_generated.rs records (verified — that file already encodes per-Declaration SourceSpan::new(file, start, end) byte ranges, e.g. line 563 for OperationEffect). So scripts/check-stage0-freshness.sh will fail without ./scripts/regenerate-stage0.sh having run + DB-8 fixed-point convergence verified. Both require cargo / the host build environment.

Worker memory says (feedback_build_environment.md): "cargo aliased to colima; regen runs on host." This sandbox does not have that alias / colima available, consistent with regen historically running on host.

No way to run from this branch's working environment — the regen + DB-8 + cargo test/clippy/fmt clean checkboxes in the test plan all require the same toolchain.

Asks (in priority order):

  1. If a regen-host runner is available against session/zesty-moth-157 HEAD 9f72e51ad, run it; the resulting bootstrap-update commit can land on this branch.
  2. If not, surface the environment-availability question to whoever provisions worker sandboxes — comment-only .dag edits should not require a separate human-host trip if regen is meant to be reachable from worker sessions.
  3. Holding the PR in draft until either (1) lands or (2) returns a path forward; will not flip ready.

If you'd rather I revert the comment edits (so the PR carries no .dag changes and the disposition lives only in the PR body / inbox replies), say so and I'll cut a commit reverting all three files.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: 9f72e51a · Trigger: schedule
  • Thinking: 188s wall

Non-blocking — Strengths

  • dsl/std/behavioral.dag The side_effects taxonomy is explicitly documented as temporary declared parallel authority with a bounded cross-surface retirement trigger.
  • src/v3/std/effects.dag The normalized-view comments keep OperationEffect/WorkflowEffect as derived transport projections and forbid variant growth for non-REST coverage gaps.
  • src/v3/lenses/idempotency.dag The lens note correctly marks the current anchor as temporary and names the signature-shape effects lens re-anchor trigger.

✅ No blocking concerns; this comment-only PR tracks the temporary authority split without expanding it.

@briansrls
briansrls marked this pull request as ready for review April 26, 2026 09:37

Copy link
Copy Markdown
Contributor Author

Manager draft audit disposition: marked ready for review.

This PR is not abandoned. The worker posted an explicit environment blocker for local stage0 regen / DB-8 verification, and the scheduled API review reported no blocking concerns on the comment-only scope. Since the remaining uncertainty needs host/CI visibility, keeping it draft would only hide the relevant gates.

Known before merge: stage0 freshness, DB-8 fixed-point, fmt, clippy, and workspace tests still need to pass. If CI or reviewer-host checks show non-span drift or structural changes, treat that as the STOP condition already documented in the PR body.

…only edits

`handwritten_parse_snapshot_matches_manifest` failed on PR #893 v3 CI:
the parse-surface debug bytes / fnv1a64 hash for `src/v3/std/effects.dag`
shifted because of the normalized-view comment additions. Item count
stays at 53 — confirms no structural change, only comment / span shift,
consistent with the PR's "comment-only" disposition.

Pulled the new (`98018` / `c1493581a8a28bf9`) values verbatim from the
`render_manifest()` output captured in the failing CI assertion at
`src/v3/compiler/tests/integration.rs:474`. This is the same update
`refresh_handwritten_parse_snapshot_manifest -- --ignored` would
produce, applied directly because cargo is unavailable in this worker
sandbox.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/zesty-moth-157 branch from eb096dd to c7e261f Compare April 26, 2026 09:43

Copy link
Copy Markdown
Contributor Author

CI disposition for current head c7e261fa578050960d62a8b80c6ebaeaa64a620f:

The failing check is the expected stage0 freshness gate, not a semantic test failure. In the v3 job:

  • v3 Stage 2d integration: passed
  • v3 full suite: passed (539 passed; 0 failed; 24 ignored)
  • per-test 2s ratchet: passed
  • clippy default features: passed
  • clippy bootstrap-regen-fresh: passed
  • v3 test targets compile with bootstrap-regen-fresh: passed
  • failing step: cargo run -p v3-compiler --features bootstrap-regen-fresh --bin regen_bootstrap -- --verify

Failure detail: committed bootstrap_generated.rs does not match fresh compile from .dag sources. First differing byte shows span drift in src/v3/std/effects.dag (7510, 7595 on disk vs 9657, 9742 expected), which matches the PR body's expected comment-edit span shift.

Required worker-owned fix: run cargo run -p v3-compiler --features bootstrap-regen-fresh --bin regen_bootstrap on session/zesty-moth-157, commit the regenerated bootstrap snapshot, and push. Then rerun CI. If the regen diff contains anything beyond source-span/snapshot freshness movement, STOP and report before pushing further.

… source comment edits

CI (regen_bootstrap --verify) failed on c7e261f: bootstrap_generated.rs
records per-Declaration SourceSpan byte ranges (~114 of them in
effects.dag), and the comment-only header edits in 4d0e5bf / b1419b8
/ 9f72e51 shifted those ranges non-uniformly. Regen requires cargo,
unavailable in this worker sandbox; manually patching 114 spans without
a runnable verifier is too risky (option (3) from the environment
blocker on PR #893).

Pivot scope: move the disposition out of span-tracked .dag headers and
into a docs/briefs/ markdown that is span-immune.

Adds:
- docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md
  — full disposition: authority rule (Modeling reply on #856),
  three-surface split (#856 supplementary audit), path (ii) receipt,
  no-extension rule, single dissolution trigger, out-of-scope list,
  DB-8/regen note explaining why this is a doc-only PR. Citable
  reference for the substrate side of the worker brief STOP.

Reverts (back to f462b0d):
- src/v3/std/effects.dag (4d0e5bf's banner + re-stamps)
- dsl/std/behavioral.dag (4d0e5bf + b1419b8 + 9f72e51 header edits)
- src/v3/lenses/idempotency.dag (4d0e5bf's normalized-view-consumer note)
- src/v3/compiler/tests/integration/parse_corpus_manifest.txt
  (c7e261f's effects.dag row refresh — no longer needed without the
  comment edits)

After this commit the only PR change is the new brief — zero source
edits, no regen required, no DB-8 risk. The disposition is unchanged;
when host-regen capacity exists, restamping the same wording into the
three .dag headers is mechanical and span-only, with this brief
remaining as the canonical reference.

Cites: #856 escalation, #857 Impossible-Bugs, #808 design, #868 dispatch.

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

Copy link
Copy Markdown
Contributor Author

This comment was posted at 09:50:56Z against c7e261f. Crossed in flight with my pivot commit 0b6d98bb2 (pushed shortly after) which takes a different path because the manager-prescribed fix isn't runnable from this worker.

Why I didn't run regen on this branch: the prescribed command is cargo run -p v3-compiler --features bootstrap-regen-fresh --bin regen_bootstrap. cargo is not available in this worker sandbox — the explicit environment blocker on this PR (#893 (comment)) showed which cargo, ~/.cargo/bin, colima, and interactive-alias resolution all failing. I cannot run regen / verify here.

What 0b6d98bb2 does instead (option (3) from the blocker reply, refined):

  • Reverts the comment-only edits to src/v3/std/effects.dag,
    dsl/std/behavioral.dag, src/v3/lenses/idempotency.dag back to
    f462b0df8.
  • Reverts the parse-corpus manifest refresh in c7e261fa5 (no longer
    needed without the comment edits).
  • Adds docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md
    carrying the full disposition (authority rule, three-surface split,
    path (ii) receipt, no-extension rule, single dissolution trigger,
    out-of-scope list, the regen note above).

Net effect: one new markdown file, zero source edits, no regen
required, no DB-8 risk. The disposition is unchanged; when host-regen
capacity exists, restamping the same wording into the three .dag
headers is mechanical span-only work with the brief remaining as the
canonical reference.

PR body has been updated to reflect the doc-only scope. CI is now
running against 0b6d98bb2; expect green.

If you'd rather I leave the comment edits in place and you'll run
regen on host (i.e., revert my revert and push the regen commit
yourself), say so and I'll restore the 9f72e51ad state. Otherwise
the doc-only scope is the cleanest unblock from the worker side.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: 0b6d98bb · Trigger: schedule
  • Thinking: 248s wall

Non-blocking — Strengths

  • docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md Classification: design/docs; the brief records the temporary authority split as bounded disposition, forbids taxonomy growth for coverage gaps, and names the cross-surface dissolution trigger.

✅ No blocking concerns; the current doc-only PR preserves the thesis direction without adding substrate, source, or taxonomy authority.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 0b6d98bb · Trigger: manual
  • Conversation: View conversation

1. Story of the diff

This PR adds a single disposition brief, docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md, and does not change compiler code, .dag source, generated bootstrap output, or tests. The brief records the current effects-authority split: some effect information is already derivable from typed signatures, the existing OperationEffect/WorkflowEffect surface is retained only as a normalized transport projection, and side_effects plus extdep idempotent/readonly declarations are explicitly classified as temporary parallel authority until a signature-shape effects lens lands (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:30, :55, :96, :121). The load-bearing mechanism is documentation discipline rather than code: it names the bridge boundaries, forbids adding new taxonomy variants to absorb coverage gaps, and gives cross-surface dissolution triggers instead of letting the compatibility view drift into authority (:83, :89, :121, :147). The final section explains why earlier source-comment edits were reverted: comment-only .dag edits would shift generated SourceSpans, and without runnable regen, the PR keeps the disposition in a span-immune brief rather than manually editing generated state (:165, :177, :181, :185).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — this is substrate-adjacent documentation, not a substrate mutation: the brief explicitly says “No code change carries this disposition” and later confirms “No new variants… No new functions. No new types” (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:6, :147). Where it discusses substrate authority, it preserves the layer model by saying taxonomy is acceptable only as a mechanically derived normalized view, and declared tags that cannot be derived are temporary parallel authority to retire or convert into coverage-gap diagnostics (:30, :32, :34).

  1. INVARIANTS.md + modeling-discipline.md.

Compliant — the diff directly applies Boundary Discipline / single authority and Progress Is Dissolution: Surface 2 is classified as a “Mechanically derived normalized view” and “Compatibility bridge territory, not authority” (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:57, :58), while Surface 3 is called “Hand-declared parallel authority” that fails the authority rule today (:98). It also fail-closes future unknowns by requiring coverage gaps to surface as structural-coverage-gap diagnostics, not as new taxonomy variants (:83, :128). The dissolution triggers are concrete: Surface 2 re-anchors when src/v3/lenses/effect_enumeration.dag lands (:89), and Surface 3 retires only when that lens lands and extdeps are reshaped onto resource-threading discipline (:121, :122).

  1. CODING.md.

N/A — the diff adds Markdown only; there are no Rust APIs, helpers, methods, result shapes, naming choices, or implementation-style changes to review. The brief explicitly confirms no new functions or types (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:149, :150).

  1. TESTING.md.

N/A — no executable behavior changed, so there is no new behavior requiring a unit, integration, or boundary test. The only test-related history in the diff explains that a parse-corpus manifest refresh belonged to reverted comment-only .dag edits, not to this final doc-only PR (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:173, :176).

  1. LOCKED DESIGN DECISIONS.

Compliant — the brief references the existing #808 design and related worker scopes but does not alter them; it explicitly leaves implementation of the signature-shape effects lens, re-anchoring consumers, and closing extdep typed-primitive gaps out of scope (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:21, :74, :152). It also preserves generated-state discipline by refusing to manually patch 114 generated SourceSpan offsets without runnable regen_bootstrap --verify (:177, :181, :182).

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the temporary shapes are tracked rather than open-ended. Documentation is present in the new brief itself; bounds are named through the three surfaces, current consumers, and explicit out-of-scope list (docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:37, :65, :152); dissolution triggers are named for both Surface 2 and Surface 3 (:89, :121). The no-extension rule further bounds the bridge by preventing future coverage gaps from being hidden as more variants (:83, :86).

3. Verdict

APPROVE — This PR is doc-only, but it does the important invariant work: it classifies the current effects surfaces, names which ones are normalized views versus temporary parallel authority, and gives bounded dissolution triggers. I did not find a diff-line-supported issue that should block or require changes.

Copy link
Copy Markdown
Contributor Author

Manager disposition for the queued manual review on current head 0b6d98bb27e12b1457a42f436527c40c2cc55bde:

Verified against the current diff and checks. The queued review is an approval with no blocking findings, and I agree with its disposition. The PR is now docs-only: one new brief at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md, zero source / .dag / generated-file edits, no new taxonomy authority, and the bridge/dissolution story is explicit.

CI is green on this head: fmt, ci, full v3 including regen/stage gates, and self_host_ratchet all passed. No fix commit is needed for this feedback item.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 13829b18 · Trigger: manual
  • Conversation: View conversation

1. Story of the diff

This PR adds a single brief, docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md, that records the current disposition for the effects-authority problem without changing code or .dag source. The document separates three surfaces: signature-shape candidates that are already structurally derivable, the current OperationEffect / WorkflowEffect normalized projection retained as a compatibility view, and the still-declared side_effects / modifier authority that must retire once the signature-shape lens and extdeps reshaping land. The load-bearing mechanism is not a new model but a debt classification: the brief names the temporary authorities, forbids extending them to cover new gaps, and gives concrete dissolution triggers for both the normalized projection and the declared taxonomy surfaces. It also explains why this is doc-only: earlier source-comment edits would have required bootstrap span regeneration that the worker could not safely run, so the disposition is centralized in a span-immune brief instead.

2. Invariant categories

  1. LAYER MODEL — Compliant. The diff does not introduce or mutate substrate types; it documents the substrate-side authority rule and explicitly says no new variants, functions, or types are added at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:147-150. The layer decision is also correct: taxonomy is allowed only as a mechanically derived normalized view, while declared tags are classified as parallel authority to retire or become structural-coverage-gap diagnostics at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:30-35.
  2. INVARIANTS.md + modeling-discipline.md — Compliant. Boundary Discipline / single authority is handled directly: Surface 2 is bounded as “compatibility bridge territory, not authority” at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:55-58, and Surface 3 is named as hand-declared parallel authority at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:96-111. Fail-closed is also preserved by the no-extension rule: coverage gaps must become structural-coverage-gap diagnostics rather than new taxonomy variants at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:83-87.
  3. CODING.md — N/A. The diff is documentation-only and adds no Rust functions, methods, result shapes, helpers, or implementation APIs; it explicitly confirms “No new functions. No new types” at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:147-150.
  4. TESTING.md — N/A. No executable behavior changes, generated artifacts, or .dag source changes land in this diff, so there is no new behavior requiring tests. The brief explains that earlier source-comment edits and the parse-corpus manifest refresh were reverted with the comments because safe bootstrap regeneration was unavailable at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:167-183.
  5. LOCKED DESIGN DECISIONS — N/A. The PR references existing design direction rather than altering it: the signature-shape effects lens remains the named target at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:74-81, while implementing the lens, re-anchoring consumers, and closing extdeps P1 bypasses are all explicitly out of scope at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:152-159.
  6. TRACKED vs UNTRACKED DEBT — Compliant. The temporary shapes are tracked rather than left open-ended. Surface 2 names the bridge, its current consumers, why it remains, the no-extension bound, and the dissolution trigger at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:55-94. Surface 3 names the declared parallel authority, cross-surface retirement requirement, and trigger requiring both the signature-shape lens and resource-threaded extdeps reshaping at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:96-129. The doc-only placement is also bounded and explained as span-immune until host regen capacity can restamp the same wording into .dag headers at docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md:185-189.

3. Verdict

APPROVE. This is a documentation-only PR, but it does useful invariant work: it prevents the current effects taxonomy from being read as a permanent authority, names the compatibility surfaces, and gives concrete dissolution triggers. I do not see a diff-line-backed blocking or non-blocking finding.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: 5ec8ad4d · Trigger: schedule
  • Thinking: 202s wall

Non-blocking — Strengths

  • docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md The doc keeps the effects taxonomy as a bounded compatibility view, names the signature-shape lens dissolution trigger, and avoids adding new substrate authority.

✅ No blocking concerns in the reviewed doc-only disposition.

@briansrls
briansrls merged commit 614b14d into main Apr 26, 2026
4 checks passed

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Review metadata

  • Provider / model: codex / unknown
  • Commit: e9f2ea2e · Trigger: schedule
  • Thinking: 252s wall

Non-blocking — Strengths

  • docs/briefs/r2-impossible-bugs-effects-normalized-view-disposition.md The DB-8/regen note keeps the doc-only scope honest by explaining why source-comment restamping waits for verified host regen.

✅ No blocking concerns in this design/docs-only disposition.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant