Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
b180b3a
WIP: R3 Debt-Paydown Mgr — standing program through R3 close
briansrls May 7, 2026
5fc86cc
docs(r3): cite specific Director-ratification comment URL in §7.6.2
briansrls May 7, 2026
4ad823d
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
6df76a6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
953102f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
6b122a6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
e781043
docs(r3): §7.6.1 log intra-cadence tripwire reading 1.56:1 (466 PRs)
briansrls May 7, 2026
eca8157
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
8d79be7
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
381730f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
58e08ff
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
8ff20de
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
93ce303
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
153204c
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
b8d9412
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
4490f41
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
11ff24a
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
095e225
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
e99e8d2
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
91b3735
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
0176712
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
9bd8bba
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
fa977b8
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
b6c269b
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
5f400c3
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 7, 2026
f1df726
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
b93cf85
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
0163053
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
51f387f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
5e22344
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
bce5e0d
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
5ca90b8
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
322fdfb
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
3be8f99
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
d31bab0
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
7368b83
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
a3b7fb6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
c76d046
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
e04145e
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
fdcd0f1
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
4c0b46b
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
aaa93e1
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
f849569
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
b811e52
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
5817591
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
aead9c8
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
43866dc
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
c9a3f66
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
8138173
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
230d9da
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
68a18d0
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
8aea68e
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
fe58a15
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
721ea0b
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
ecce7a3
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
8c52459
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
f9326d2
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
19397f9
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
0b23b1f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
e31ffda
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
1191de2
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
6d61709
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
fdd5593
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
8e82c5f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
f22de90
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
b6a36ab
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 8, 2026
49a2c47
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
f4a43ac
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
aea2efd
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
3dab9af
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
004e107
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
6fbaf5c
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
dfc419f
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
5306364
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
51e3f20
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
ea45bb6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
855b999
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
9a2e223
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
28fe465
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
c13bfcf
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
d53cba6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
67f9c90
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
8be2051
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
48ac525
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
4d8e6a3
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
5b8b426
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
54b15e6
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
6882257
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
cd50cc7
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
f33e564
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
c3389f7
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
9ad6a7d
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
673b161
WIP: R3 Debt-Paydown Mgr — standing program through R3 close
briansrls May 9, 2026
612d480
docs(r3): r3-debt-sweep §1 Class A-G populated + Class P added — Phas…
briansrls May 9, 2026
33e0897
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
3db6740
docs(briefs): 6 worker briefs for gpt-5-5-pro novel findings F1-F6
briansrls May 9, 2026
d5f6635
docs(audit): SG-0 census per-entry classification (Phase 2(3) deliver…
briansrls May 9, 2026
03a8830
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
8a89e07
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
44c2d86
docs(audit): one-source SG-0 untagged-count derivation (codex BLOCKIN…
briansrls May 9, 2026
cddcee9
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
b94dc0e
docs(briefs): supersede-disambig marker on TC3 D4 brief line 121 (CI …
briansrls May 9, 2026
7489c1b
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
85edd3e
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
c572861
docs(audit): refine SG-0 classifier with path-based heuristics (bette…
briansrls May 9, 2026
c03e19d
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
ddd68ff
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
78647e0
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
26cb833
Merge remote-tracking branch 'origin/main' into session/gentle-newt-665
briansrls May 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 122 additions & 9 deletions docs/audit/r3-debt-sweep-2026-05-06.md

Large diffs are not rendered by default.

208 changes: 208 additions & 0 deletions docs/audit/sg0-census-classification-2026-05-09.md

Large diffs are not rendered by default.

78 changes: 78 additions & 0 deletions docs/briefs/r3-novel-f1-missingemissionpath-typed-axes-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# R3 Novel-Finding Worker Brief — F1 `MissingEmissionPath` typed-axes substrate

**Owner**: Substrate Mgr (warm-wolf-698 / gunbc#2068) lane scope; worker dispatch via Substrate Mgr standing authority OR Debt-Paydown Mgr (gentle-newt-665 / gunbc#2062) standing authority per Brian directive 2026-05-09.
**Authority parent**: gpt-5-5-pro reflective analysis on `main@b09e0c8` Finding 1; PM dispatch at gunbc#846 c#4413701937 (operator authorized 2026-05-09; standing-authority confirmed).
**Priority**: HIGH — typed-carrier regression at diagnostic boundary; Rust mirror is MORE typed than substrate (inverted drift).

---

## §0. Problem statement

Substrate stringifies typed axes that the Rust mirror types correctly:

`src/v3/std/diagnostics.dag:219-223`:
```
| MissingEmissionPath {
connective: String,
behavior: String,
target: String
}
```

Rust mirror `src/v3/grounding_cross_target_meta/src/diagnostic.rs:26-30`:
```rust
MissingEmissionPath {
connective: FormAxis,
behavior: BehaviorAxis,
target: ShapeATarget,
}
```

Substrate comments at `:215-218` admit: *"Each axis carries a string label (substrate-anchored discriminant; resolved against `TypeConnective` per #1229 anchor + `Behavior` per L1 model + Shape A targets per `r2-grounding-manager.md` portability set)."*

P1 Modeling Faithfulness violation: substrate authority weaker-typed than its consumer. Reverse-direction drift — the typed names exist (`TypeConnective`, `Behavior`, `ShapeATarget`); substrate just bypasses them via String labels.

## §1. Required outcome

Substrate axes typed against existing carriers; Rust mirror trivially aligns.

## §2. Fix options

**Option A (preferred)**: Type substrate fields directly:
```
| MissingEmissionPath {
connective: TypeConnective,
behavior: Behavior,
target: ShapeATarget
}
```

Update consumers (lower / emit / test_runner) to pass typed values. Rust mirror matches without conversion.

**Option B (pragmatic)**: Keep String axes; add typed-discriminant-roundtrip assertion in Rust constructor (`from_cell` at `:34-41`); document the substrate-weak-type as deliberate boundary.

PM-recommended: Option A — eliminates the drift class entirely. Option B preserves it as ratified-bridge.

## §3. Files

**Option A**:
- `src/v3/std/diagnostics.dag` (type fields)
- `src/v3/grounding_cross_target_meta/src/diagnostic.rs` (no change to Rust — already typed)
- consumers of `MissingEmissionPath` constructor in `.dag` (typecheck)
- new `.dag` `TestClaim` cementing typed roundtrip

## §4. Cross-cutting constraints

- No new hand-Rust tests; `.dag` `TestClaim` form.
- STOP-and-PING via Mgr inbox if `TypeConnective`/`Behavior`/`ShapeATarget` need substrate-shape changes.
- Cross-references Class C row 4 in `docs/audit/r3-debt-sweep-2026-05-06.md`.

## §5. Receipt

- Substrate-side fields typed; Rust mirror trivially aligns.
- Cementing `TestClaim` pinning typed roundtrip.
- ROADMAP / sweep-doc Class C row 4 updated to RETIRED.

---

**End of brief.**
52 changes: 52 additions & 0 deletions docs/briefs/r3-novel-f2-shapeatarget-vs-languagespec-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# R3 Novel-Finding Worker Brief — F2 `ShapeATarget` closed enum vs `LanguageSpec` extensibility

**Owner**: Grounding Mgr (sunny-koi-893 / gunbc#2063) lane scope; coordinate with Substrate Mgr (warm-wolf-698 / gunbc#2068) on carrier consumption shape.
**Authority parent**: gpt-5-5-pro reflective analysis Finding 2; PM dispatch at gunbc#846 c#4413701937 (operator authorized 2026-05-09).
**Priority**: HIGH — Class F ontology duplication; closed enum constrains thesis extensibility claim.

---

## §0. Problem statement

`ShapeATarget = Rust | Python | Go` is a closed sum type used at `src/v3/grounding_cross_target_meta/src/cells.rs` and consumed across grounding-related crates. In parallel, `LanguageSpec` data declarations at `src/v3/spec/{rust,python,go}.dag` are extensible — adding a fourth language is "add `.dag` data + retypecheck."

But `ShapeATarget` is closed at the Rust enum boundary. Adding a fourth target requires editing the enum, the discriminant, and every match-arm — Rust-side change instead of `.dag`-data change.

P1 Modeling Faithfulness: thesis says target extensibility is data-driven; the enum says it's closed. The `LanguageSpec` carrier IS the source of truth; `ShapeATarget` is a parallel-authority shadow.

## §1. Required outcome

`ShapeATarget` consumes from `LanguageSpec` data declarations; closed enum dissolves to a typed-id reference.

## §2. Fix options

**Option A (proper dissolution)**: Replace `ShapeATarget = Rust | Python | Go` with `ShapeATarget = LanguageSpecRef { spec_id: DeclarationId }` carrying a typed reference to the `LanguageSpec` data declaration. Consumers dispatch via reflected spec lookup; adding a target = `.dag` data only.

**Option B (pragmatic ratchet)**: Keep closed enum + add cementing test that asserts `ShapeATarget` variants partition the registered `LanguageSpec` declarations (any new `LanguageSpec` without a matching enum variant fails closed). Test fails if the enum drifts behind data.

PM-recommended: Option A — extensibility is the thesis claim; the enum negates it. Option B ratchets the drift but doesn't dissolve the boundary.

## §3. Files

**Option A**:
- `src/v3/grounding_cross_target_meta/src/cells.rs` (replace closed enum with typed ref)
- `src/v3/grounding_cross_target_meta/src/diagnostic.rs:29` (consumer)
- `src/v3/compiler/tests/integration/cross_target_coverage_carrier_test.rs` (substrate read)
- All Rust match-arm consumers across grounding crates

## §4. Cross-cutting constraints

- Substrate-grep before authoring (Mgr-cited discipline): consumer-side breadth audit before changing the Rust enum.
- STOP-and-PING if substrate-side reflection plumbing isn't ready (`LanguageSpec` declaration-id lookup via `declaration_by_name` α).
- Cross-references Class F row 3 in sweep doc.

## §5. Receipt

- `ShapeATarget` consumes typed `LanguageSpec` reference (Option A); OR cementing test pins enum ⊇ registered specs (Option B).
- All consumers updated.
- Cementing `.dag` `TestClaim` for the partition-or-typed-ref invariant.
- Sweep-doc Class F row 3 updated.

---

**End of brief.**
50 changes: 50 additions & 0 deletions docs/briefs/r3-novel-f3-map-string-bool-as-set-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# R3 Novel-Finding Worker Brief — F3 `Map<String, Bool>` used as set across graph/syntax/node files

**Owner**: Substrate Mgr (warm-wolf-698 / gunbc#2068) lane scope.
**Authority parent**: gpt-5-5-pro reflective analysis Finding 3; PM dispatch at gunbc#846 c#4413701937 (operator authorized 2026-05-09).
**Priority**: MEDIUM — Class F missed algebraic structure; `Set<A>` already declared in std but bypassed.

---

## §0. Problem statement

`Map<String, Bool>` appears repeatedly as a presence-set across graph/syntax/node files — e.g., `src/v2/04_infer.dag:400` `fn set_has(m: Map<String, Bool>, key: String) -> Bool`. The stored `Bool` value is ignored; `set_has` exists solely because the substrate doesn't reach for `Set<A>` declared elsewhere in `dsl/std/`.

P1 Modeling Faithfulness: a present algebraic structure (`Set<A>`) is bypassed in favor of a structurally-weaker `Map<K,Bool>` shape. Field labels lie about what's stored.

## §1. Required outcome

`Map<String, Bool>` presence-set consumers migrate to `Set<String>`; `set_has` deletes (or routes to `Set::contains`).

## §2. Fix options

**Option A**: Find all `Map<String, Bool>` declarations + uses; verify each is a presence-set (Bool-value-ignored); migrate to `Set<String>`. Delete `set_has` helper after migration. Cementing test scans for any new `Map<X, Bool>` with `Bool`-ignored consumer.

**Option B**: Add ratchet test that flags new `Map<X, Bool>` declarations matching the bypassed-Set shape (regex over `.dag` files); allow existing instances to ratchet down via per-PR migration.

PM-recommended: Option A for the migration cycle; Option B as a closing ratchet if some instances can't migrate (cross-cutting constraint emerges).

## §3. Files

**Option A**:
- `src/v2/04_infer.dag` + similar across graph/syntax/node files (audit then migrate)
- `dsl/std/set.dag` (verify `Set::contains` shape; add if missing)
- consumers (typecheck migration)
- new `.dag` `TestClaim` for ratchet

## §4. Cross-cutting constraints

- Audit pass before migration: enumerate `Map<.*Bool>` instances; classify presence-set vs genuine bool-value.
- v2-side migrations (e.g., `src/v2/04_infer.dag`) are Class E v2-retirement-eligible; coordinate with PB Mgr (warm-dove-618 / gunbc#2074) on whether to migrate-then-retire or skip.
- Cross-references Class F row 4 in sweep doc.

## §5. Receipt

- All `Map<String, Bool>` presence-set consumers migrated to `Set<String>`.
- `set_has` helper deleted or aliased to `Set::contains`.
- Ratchet `TestClaim` blocks regressions.
- Sweep-doc Class F row 4 updated.

---

**End of brief.**
52 changes: 52 additions & 0 deletions docs/briefs/r3-novel-f4-partitionresult-anonymous-bypass-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# R3 Novel-Finding Worker Brief — F4 `PartitionResult` bypassed by anonymous return type

**Owner**: Substrate Mgr (warm-wolf-698 / gunbc#2068) lane scope.
**Authority parent**: gpt-5-5-pro reflective analysis Finding 4; PM dispatch at gunbc#846 c#4413701937.
**Priority**: LOW-MEDIUM — Class G small-scope cleanup; thesis-faithfulness doc/consumer drift.

---

## §0. Problem statement

`dsl/std/filesystem.dag:51` declares:
```
type PartitionResult { ... }
```

But the consumer at `:83` uses an anonymous return record:
```
fn partition_entries(entries: List<FileEntry>) -> { readable: List<FileEntry>, skipped: List<FileEntry> } { ... }
```

The named type `PartitionResult` exists but is bypassed — the anonymous return shape duplicates the declared type's structural shape without naming it. Class G small duplicate-authority cleanup.

## §1. Required outcome

`partition_entries` returns `PartitionResult` directly; anonymous duplication eliminated.

## §2. Fix options

**Option A**: Update `partition_entries` signature to `-> PartitionResult`; verify consumers don't break; delete anonymous shape duplication.

(Single option; trivial scope.)

## §3. Files

- `dsl/std/filesystem.dag` (signature change)
- consumers of `partition_entries` (typecheck)

## §4. Cross-cutting constraints

- Verify shape exact-match between `PartitionResult` declaration and current anonymous return before substituting.
- Cross-references Class G row 14 in sweep doc.

## §5. Receipt

- `partition_entries` returns `PartitionResult` named type.
- Anonymous return type deleted.
- Consumers verified or updated.
- Sweep-doc Class G row 14 updated.

---

**End of brief.**
64 changes: 64 additions & 0 deletions docs/briefs/r3-novel-f5-composedeffect-illegal-product-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# R3 Novel-Finding Worker Brief — F5 `ComposedEffect { idempotent, breaking_operation }` illegal product

**Owner**: Substrate Mgr (warm-wolf-698 / gunbc#2068) lane scope.
**Authority parent**: gpt-5-5-pro reflective analysis Finding 5; PM dispatch at gunbc#846 c#4413701937.
**Priority**: HIGH — Class C illegal-state-representable; soundness adjacent.

---

## §0. Problem statement

`dsl/std/effects.dag:135` declares:
```
type ComposedEffect { ... }
```

with fields including `idempotent: Bool` and `breaking_operation: ...`. These two fields can both be set in inconsistent ways — e.g., a "breaking operation" claimed `idempotent: true` is contradictory; the type permits the illegal state.

P1 Modeling Faithfulness: typed carriers should not admit semantically-illegal field combinations. Class C illegal-product instance.

## §1. Required outcome

`ComposedEffect` shape redesigned so contradictory field combinations are unrepresentable.

## §2. Fix options

**Option A (sum split)**: Replace product with sum:
```
type ComposedEffect =
| IdempotentEffect { ... }
| BreakingEffect { breaking_operation: OperationEffect, ... }
| NeutralEffect { ... }
```

The sum forecloses contradictory field combinations.

**Option B (refinement)**: Keep product; add `where` refinement constraining valid (idempotent, breaking_operation) pairs. Requires DB-11 alias-RHS `where` parsing already landed (#703).

PM-recommended: Option A — eliminates the illegal state shape entirely (per `feedback_load_bearing_ratchet_preservation` / structural-illegal preference). Option B retains the product shape with downstream refinement load.

## §3. Files

**Option A**:
- `dsl/std/effects.dag:135` (replace product with sum)
- `src/v2/effect_derivation.dag` consumers
- `src/v2/stage0/src/v2_compiler_effect_derivation.rs` (consumer; v2-Class-E)
- consumers across .dag effect_derivation paths
- new `.dag` `TestClaim` cementing legal-state-only construction

## §4. Cross-cutting constraints

- v2-side consumer (`src/v2/...`) migration; coordinate with PB Mgr on v2-retirement timeline interaction.
- Cross-references Class C row 5 in sweep doc.
- STOP-and-PING via Mgr inbox if `OperationEffect` shape needs co-evolution.

## §5. Receipt

- `ComposedEffect` redesigned (Option A or B); illegal field combinations no longer representable.
- Consumers updated.
- Cementing `TestClaim` for legal-construction-only.
- Sweep-doc Class C row 5 updated.

---

**End of brief.**
50 changes: 50 additions & 0 deletions docs/briefs/r3-novel-f6-derive-op-effect-string-parser-worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# R3 Novel-Finding Worker Brief — F6 `derive_op_effect(method_str, path_str)` string parser at structural boundary

**Owner**: Substrate Mgr (warm-wolf-698 / gunbc#2068) lane scope.
**Authority parent**: gpt-5-5-pro reflective analysis Finding 6; PM dispatch at gunbc#846 c#4413701937.
**Priority**: HIGH — Class C string-keyed dispatch over typed carriers; structural-boundary violation.

---

## §0. Problem statement

`src/v2/effect_derivation.dag:20-41` exposes `derive_op_effect(method_str: String, path_str: String) -> OperationEffect`. The function parses unstructured strings (HTTP method as String, path as String) at what should be a structural boundary — typed carriers `HttpMethod` (sum-type-shaped) and `Path` (`http_path.dag`) exist but are bypassed.

P2 Boundary Discipline: structural facts encoded as strings at internal boundaries. Reverse-direction problem from F1 — here the consumer is well-typed but the producer-input boundary stringifies.

## §1. Required outcome

`derive_op_effect` consumes typed `HttpMethod` + `Path` carriers; string parsing dissolves to surface-only (parse once at HTTP boundary, structural everywhere downstream).

## §2. Fix options

**Option A (proper dissolution)**: Change signature to `derive_op_effect(method: HttpMethod, path: Path) -> OperationEffect`. Parsing happens once at the HTTP-surface boundary; `derive_op_effect` operates structurally. Cementing test pins typed-input invariant.

**Option B (hybrid)**: Keep string signature for v2 compat; add typed wrapper `derive_op_effect_typed(method: HttpMethod, path: Path)` that string-converts internally; migrate callers; delete string variant after migration.

PM-recommended: Option A if v2-retirement timeline allows direct migration. Option B if Class E v2-bridge constraint forces gradual migration.

## §3. Files

**Option A**:
- `src/v2/effect_derivation.dag` (signature change + remove string parsing)
- `src/v2/stage0/src/v2_compiler_effect_derivation.rs` (Rust consumer; v2-Class-E)
- callers (typecheck migration)
- new `.dag` `TestClaim` for typed-input invariant

## §4. Cross-cutting constraints

- v2-side surface; coordinate with PB Mgr on v2-retirement timing (Class E).
- Cross-references Class C row 6 in sweep doc.
- STOP-and-PING via Mgr inbox if `HttpMethod` typed-carrier doesn't yet exist (substrate prereq).

## §5. Receipt

- `derive_op_effect` consumes typed carriers; string parsing dissolves.
- Callers migrated.
- Cementing `TestClaim` pins typed-input invariant.
- Sweep-doc Class C row 6 updated.

---

**End of brief.**
Loading
Loading