Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
21fa7a1
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
329a000
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
deb5294
chore(bootstrap): regen snapshots after wall_clock_ratchet_manifest m…
briansrls May 13, 2026
87a418c
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
180b21e
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
7d2488b
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
4093762
fix(#3032): ratchet test JSON contract + P5(b) receipt in SG-0 append
briansrls May 13, 2026
8174a25
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
bf53e42
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
cf43346
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
c5c8fe5
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
f9dddcb
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
f9416c4
WIP: R3 Gap 7 T-WAD Slice 6 BinaryShim runtime + slow-test-exemptions…
briansrls May 13, 2026
88590f4
fix(ci): refresh bootstrap snapshots after verification.dag comment s…
briansrls May 13, 2026
0e91d0e
docs(scripts): clarify test-check-test-timeout.sh header
briansrls May 13, 2026
9f2cffa
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
4d15086
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
8d2fc16
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
891a5cc
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
eededb7
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 2026
daf5d62
Merge remote-tracking branch 'origin/main' into session/wise-gull-139
briansrls May 13, 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
16 changes: 10 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -505,14 +505,18 @@ jobs:
fi
echo "::notice::Restore criteria: rebuild session per #2722 §5 OnceLock/cached_compile amortization → per-test wall ≤ 2s ratchet → re-enable per cluster filter (replace __HOT_FIX_NONEXISTENT_FILTER__ with cluster-specific filter)."

# Build `gunbc-ci` (BinaryShim entrypoint + interim #102-path warn-manifest projector).
- name: v3 gunbc-ci binary (wall-clock warn manifest + BinaryShim stub)
if: always()
run: cargo build -p v3-compiler --bin gunbc-ci

# Per-test 2s wall-clock ratchet — binding Phase 0 gate.
# Parses the timing log captured by the full-suite steps above; does not
# re-run `cargo test`. Warn-policy rows in
# `scripts/test-node-wall-clock-ratchet.jsonl` (interim JSONL bridge: same
# libtest tokens as modeled `TestNodeCostDimension` / gate #101; gate #102
# pass still requires reading policy from substrate, not this file) log as
# warnings when over budget; any other test above the threshold fails this
# step. See
# re-run `cargo test`. Warn-policy rows are projected from
# `dsl/gunbc/test_node_wall_clock_ratchet.dag` via `gunbc-ci wall-clock-warn-manifest`
# (**interim bridge** — not #102 closure; same libtest tokens as `TestNodeCostDimension`
# / gate #101 until policy routes off timing facts). Over-budget warn-listed tests log as warnings; any other test
# above the threshold fails this step. See
# `src/v3/compiler/tests/HANDOFF_PHASE0.md` (TESTING.md § test layers,
# `feedback_test_timeout_2s`).
#
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ Tracked debt not dispatched with the 2026-04-21 lane wave (Lane 1e P3.0, SG-2c-4
- **Lane E-I — port `SubValueRelation` + inductive fields + cost algebra (M)**: port Tier 1 (structural) + Tier 2 (lattice) + Tier 3 (`CostBound` + master theorem). Requires E-T, E-C. Pre-flight: verify v3 lowers `CostBound`'s self-referential-through-`List` shape. Acceptance: carrier types ported with round-trip tests; no lens row moves on E-I alone because consumer-visible facts still wait for E-P producer/consumer wiring.
- **Lane E-P — per-call descent-evidence provenance (M)**: producer coverage gate #76 receipt is landed as `v3_compiler::dag::per_call_descent_evidence` for the current ratcheted lowered callable surface (live `TransformTarget::Callable` edges; per-argument evidence vector; arithmetic, structural sub-value, preserved-value, and fail-closed unknown/absent cases; `TransformNode` stays unwidened). v2 stores this class of fact on `ExprCall.descent_evidence` (`src/v2/00_core.dag:199`); v3 derives it off-substrate for now. Requires E-T, E-C, E-I. Remaining acceptance for the broader lane: cost lens consumption and same-source v2/v3 cementing beyond the already-wired complexity recurrence consumer.
- **Lane E-M — `MethodSemantics` port-or-subsume (S–M)**: **closed via M-b structural subsumption.** Transitive facts (`CollectionSizeEffect` / `CostShape` / `AlgebraFieldTemplate`) remain algebra-declaration facts; v3 method-like calls dispatch through `TransformTarget::{Callable, FieldProject, Operator}` and typed declaration/effect metadata. No `src/v3/std/method_semantics.dag`, no Rust mirror, and no `ExprMethodCall` attachment point.
- **CI ratchet architecture — PARTIAL (T-Receipts W1 second bundle)**: surfaced during the 2026-04-21 reflective analysis (`53b3110..ae8825a` range). Commits `37cd6128`, `4898983e`, `f84ed355` hardened the ratchet against CI-log instability, but `2d8396df` widened the original exemption list. **Landed partial:** classification audit [docs/debt/ci-ratchet-exemption-audit-2026-04-24.md](docs/debt/ci-ratchet-exemption-audit-2026-04-24.md) (2026-04-24 baseline) plus follow-up routing audit [docs/debt/ci-ratchet-exemption-audit-2026-05-02.md](docs/debt/ci-ratchet-exemption-audit-2026-05-02.md) (bounded scope — not a completed Phase 1 per-test timing pass). **Manifest bridge landed:** `scripts/slow-test-exemptions.txt` and `TEST_TIMEOUT_MAX_EXEMPTIONS` are retired; `scripts/check-test-timeout.sh` now reads structured warn policy from `scripts/test-node-wall-clock-ratchet.jsonl` and fails closed for over-budget libtest tokens not warn-listed in the manifest, with `scripts/test-check-test-timeout.sh` wired through CI/Makefile to pin the consumer contract pending #102 projection from modeled `TestNodeCostDimension` timing facts. **D1 residual sweep 2026-05-13:** [docs/debt/slow-test-residual-sweep-2026-05-13.md](docs/debt/slow-test-residual-sweep-2026-05-13.md) verified manifest names against current libtest list and retired one now-under-budget warn row. **Still open:** fresh CI-shaped per-test timing audits, stale warn-row deletion when entries measure under 2s, and per-node duration budgets once fresh timings exist. Dispatch brief: `docs/briefs/ci-ratchet-architecture-audit.md`.
- **CI ratchet architecture — PARTIAL (T-Receipts W1 second bundle)**: surfaced during the 2026-04-21 reflective analysis (`53b3110..ae8825a` range). Commits `37cd6128`, `4898983e`, `f84ed355` hardened the ratchet against CI-log instability, but `2d8396df` widened the original exemption list. **Landed partial:** classification audit [docs/debt/ci-ratchet-exemption-audit-2026-04-24.md](docs/debt/ci-ratchet-exemption-audit-2026-04-24.md) (2026-04-24 baseline) plus follow-up routing audit [docs/debt/ci-ratchet-exemption-audit-2026-05-02.md](docs/debt/ci-ratchet-exemption-audit-2026-05-02.md) (bounded scope — not a completed Phase 1 per-test timing pass). **Warn-policy bridge landed (interim — not #102 closure):** `scripts/slow-test-exemptions.txt` and `TEST_TIMEOUT_MAX_EXEMPTIONS` are retired; checked-in `scripts/test-node-wall-clock-ratchet.jsonl` is deleted in favor of substrate `dsl/gunbc/test_node_wall_clock_ratchet.dag`, with `gunbc-ci wall-clock-warn-manifest` projecting JSONL for `scripts/check-test-timeout.sh`, which fails closed for over-budget libtest tokens not on the warn list (**interim bridge — not #102 closure**; #102 pass target remains `TestNodeCostDimension` timing facts as policy authority). `scripts/test-check-test-timeout.sh` is wired through CI/Makefile to pin the consumer contract. **D1 residual sweep 2026-05-13:** [docs/debt/slow-test-residual-sweep-2026-05-13.md](docs/debt/slow-test-residual-sweep-2026-05-13.md) verified manifest names against current libtest list and retired one now-under-budget warn row. **Still open:** fresh CI-shaped per-test timing audits, stale warn-row deletion when entries measure under 2s, and per-node duration budgets once fresh timings exist. Dispatch brief: `docs/briefs/ci-ratchet-architecture-audit.md`.
- **`IntegrationRsScan` / `integration_rs_active_line_contains` in `src/v3/compiler/tests/integration/common/mod.rs` — PARTIAL (T-Receipts; char/byte-char literal widening **PR #1856**).** Historical context (#686 / #705): the scanner was narrow enough that authors on its scan path avoided `b'\\'` / `b'"'` in favor of numeric byte constants. **Landed in #1856:** explicit `ByteCharLiteral` / `CharLiteral` states with escape-aware skipping plus lifetime vs `'…'` disambiguation and focused unit tests — byte-char and character literals no longer false-green Band-C `#[path` / `mod` needles. (Earlier ROADMAP text cited **PR #1791** for partial CI / row hygiene only; **#1856** is the live implementation receipt for the widening in `common/mod.rs`.) **Residual:** raw strings (`r#"…"#`) and byte strings (`b"…"`, `br#"…"#`) are still intentionally loud via the existing opener probe (panic in `Code`). Dissolution for that remainder: widen `IntegrationRsScan` for those forms **or** replace this scan with a structural reader. Owner: unassigned; P2 Boundary Discipline / T-Receipts bundle.
- **Stale-receipt sweep in `docs/briefs/` — PARTIAL (T-Receipts W1).** The cited `DeclarationLookup` cleanup brief now carries a historical-receipt banner stating the lane is closed by SG-4b-1-fix and that `DeclarationLookup` / `find_declaration` are gone from `src/v3/lenses/variant_payload.dag`; its stale INVARIANTS refs were also updated to stable anchors. Remaining broad `docs/briefs/` sweep stays open for later post-wave stale claims. **Include:** `docs/design-pure-bootstrap.md`'s hand-maintained count ("78 hand-maintained .rs files") was stale vs. the SG-0 census — **CLOSED in this R1 PR**: all five occurrences (lines 7, 49, 82, 105, 242 of the design doc) now point at the live census, reframed as deltas against the illustrative 78-file baseline, or scoped to the non-test + TESTING residual framing. No frozen absolute count remains.
- **Compiler–`std/` consolidation program — specific migrations**: end-state defined in [docs/thesis/compiler-std-consolidation.md](docs/thesis/compiler-std-consolidation.md). Each of the migrations below is a standalone lane; together they collapse the compiler-specific type surface toward the positive definition (pipeline + regen + lens-specific return-type carriers + accessor). **Ratchet:** count of `type` declarations in `src/v3/compiler/*.dag` AND `src/v3/lenses/*.dag` that are NOT in the positive-def set AND NOT exempted → 0. Positive-def: pipeline/regen types + lens-API return carriers (`Origin`, `UnusedParameter`, `ComplexitySummary`, `VariantPayloadShapeLookup` 3-variant, `TemplateArgumentBinding` semantic carrier, `LinearBranchesLookup` terminal lens-private control-flow carrier, etc.). Exempted: `parse_tables.dag` (7 types, pending SG-2c-proper per-row classification). In-ratchet: **workaround/scaffold-shaped lens coproducts with named dissolution triggers (`TemplateArgumentsMatch`, `TemplateArgumentCursor`, `NormalizedInstantiationArgs`, `NonCommutingPairLookup`)** — Lookup-pattern carriers on lens surfaces import `v3.std.lookup::Lookup` (`complexity`, `cost`, `infer_helpers`); `NonCommutingPairLookup` dissolves when typed pairwise non-commute evidence lands on `WorkflowParallelismReport`. Primary count: 4. See thesis doc table for per-file disposition.
Expand Down
23 changes: 12 additions & 11 deletions TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,21 +156,22 @@ drifting into heavy-integration territory. See

The v3 CI job tees libtest `--report-time` output and
`scripts/check-test-timeout.sh` enforces `TEST_TIMEOUT_MS` (default
2000 ms). **Warn-only backlog** is the checked-in manifest
**`scripts/test-node-wall-clock-ratchet.jsonl`**: one JSON object per
line, `{"test":"<libtest token>","policy":"warn"}`. That file is an
2000 ms). **Warn-only backlog** is modeled in
**`dsl/gunbc/test_node_wall_clock_ratchet.dag`** and projected to JSONL
via **`gunbc-ci wall-clock-warn-manifest`** for `jq` — one JSON object per
line, `{"test":"<libtest token>","policy":"warn"}`. That path is an
**interim shell bridge** (P5 scaffold): same libtest name tokens the
substrate will eventually attach `TestNodeCostDimension` facts to (R3
gate **#101**, `src/v3/std/verification.dag`), but **today the script
reads the JSONL directly** — it is not yet a projection from modeled
test-node timing facts. Retiring `scripts/slow-test-exemptions.txt`
gate **#101**, `src/v3/std/verification.dag`), but **policy is still a
parallel warn-name roster**, not yet derived from modeled test-node
timing facts — so it does **not** satisfy gate **#102**
`slow_test_exemptions_dissolved` as “no side manifest / timing-fact
authority” under `INVARIANTS.md` P5. Retiring `scripts/slow-test-exemptions.txt`
drops the free-form table plus the `TEST_TIMEOUT_MAX_EXEMPTIONS`
row-count ratchet and tightens fail-closed behavior; it does **not** by
itself satisfy gate **#102** `slow_test_exemptions_dissolved` as “no
side manifest” under `INVARIANTS.md` P5. Unknown tests over budget **fail
row-count ratchet and tightens fail-closed behavior. Unknown tests over budget **fail
closed**. Any `#[test]` that must **warn** instead of **fail** when over
budget needs a manifest row in the **same PR** as the policy intent.
Override: **`TEST_TIMEOUT_MANIFEST`**.
budget needs a row in the `.dag` warn table in the **same PR** as the policy intent.
Override: **`TEST_TIMEOUT_MANIFEST`** (JSONL fixture path for self-tests / local override only).

## Mocks and dependency injection

Expand Down
Loading
Loading