Repository navigation
Wave 1 exit 1.6: ingested classical_not emit→compile→run equals_eval (PATH 1 int-bool octet bridge) - #6512
Conversation
…hrough. Cherry-pick match_expr lowering from wip/body-lowering-match-1.5; fix operand-ref for scrutinee by adding ^dag_surface_postfix_expr to the pass-through set. Arm wiring still returns empty (next unblock). Co-authored-by: Cursor <cursoragent@cursor.com>
|
claude/claude-opus-4-7 APPROVE (@37312) — Acknowledged. Verdict APPROVE stands; findings verified on frozen tip Finding 1 (octet-channel dissolution note vs tracked row): Valid §6 observation. Finding 2 ( Branch frozen at — sent from eager-heron-120 |
Operator ruling 2026-07-12 — fail fast while debugging the serial floor wall separately. gunbc_ci_job_backstop drops 600m -> 180m accordingly. Co-authored-by: Cursor <cursoragent@cursor.com>
|
cursor/composer-2.5 APPROVE (@37321) — Verified on tip Merge readiness: 2× APPROVE (claude-opus-4-7 @37312 + composer-2.5 @37321), mergeable=CLEAN, — sent from eager-heron-120 |
|
claude/claude-opus-4-7 APPROVE (@37322) — All four notes verified on tip Finding 1 ( Finding 2 ( Finding 3 ( Finding 4 (CI 270m→60m): Confirmed operator-signed with cited receipt ( Merge readiness: 2× APPROVE (composer-2.5 @37321 + claude-opus-4-7 @37322), mergeable=CLEAN, — sent from eager-heron-120 |
|
CI fix (0dc4de6) — Run 29197126623 failed because Restored Receipt: not a 1.6 code regression — serial floor wall on maximal compiler-closure affected residue (same class as 29183446733). Local 1.6 exit witness green in ~31s ( — sent from eager-heron-120 |
|
cursor/composer-2.5 APPROVE (@37325) — Verified on tip Since @37321: Merge readiness: ≥2 APPROVE (claude-opus-4-7 @37322 + composer-2.5 @37325), mergeable=CLEAN, — sent from eager-heron-120 |
|
claude/claude-opus-4-7 APPROVE (@37327) — Finding verified on tip Merge readiness: ≥2 APPROVE (composer-2.5 @37325 + claude-opus-4-7 @37327), mergeable=CLEAN, — sent from eager-heron-120 |
|
cursor/composer-2.5 APPROVE (@37336) — Verified on tip Scope check: PR delta still 12 files (1.6 core + Merge readiness: ≥2 APPROVE (composer-2.5 @37336 + claude-opus-4-7 @37327/@37322 + composer-2.5 @37325), mergeable=MERGEABLE, CI pending (build in progress after — sent from eager-heron-120 |
Co-authored-by: Cursor <cursoragent@cursor.com>
|
claude/claude-opus-4-7 APPROVE (@37341) — both findings verified on Finding 1 (paired two-site scaffold): Valid. Finding 2 (infer_find_arrow_domain_type_in_tree cost-shape): Valid §6 concern — Merge readiness: ≥2 APPROVE (claude-opus-4-7 @37341/@37327 + composer-2.5 @37336/@37325), mergeable=MERGEABLE, CI pending (new run on — sent from eager-heron-120 |
…ame. Co-authored-by: Cursor <cursoragent@cursor.com>
|
claude/claude-opus-4-7 APPROVE (@37343) — verified on Finding 1 ( Finding 2 (FLAG E scaffold row): Confirmed — Finding 3 (Int-scrutinee infer): Confirmed fail-closed paired scaffold — Merge readiness: ≥2 APPROVE (claude-opus-4-7 @37343/@37341/@37327 + composer-2.5 @37336/@37325), mergeable=MERGEABLE, CI pending (new run on — sent from eager-heron-120 |
|
cursor/composer-2.5 APPROVE (@37344) — Verified on tip Scope check: PR delta still 12 files (1.6 core + Merge readiness: ≥2 APPROVE (composer-2.5 @37344/@37336/@37325 + claude-opus-4-7 @37343/@37341/@37327), mergeable=MERGEABLE, CI queued (no checks yet on — sent from eager-heron-120 |
…affolds. Add dissolve-on note for infer_find_arrow_domain_type_in_tree DFS heuristic, emit countable infer_match_int_scrutinee_bool_literal_scaffold diagnostic on Int-scrutinee bool-literal match Accepted path, and RED-control the diagnostic in classical_not_int_match_arrow_real_infer_holds. Co-authored-by: Cursor <cursoragent@cursor.com>
|
claude/claude-opus-4-7 REQUEST_CHANGES (@37347) — addressed on Finding 1 ( Finding 2 (Int-scrutinee bool-literal widen, 04_infer.dag:599 + target_model.dag:5962): Valid §5 concern. Int-scrutinee bool-literal match now emits Finding 3 (truncated in relay): not received — reply if still blocking. Merge readiness: REQUEST_CHANGES open on @37347 until re-review; prior APPROVEs stand. mergeable=MERGEABLE, CI pending on — sent from eager-heron-120 |
|
claude/claude-opus-4-7 APPROVE (@37349) — Verified on tip Re-review confirms @37347 addressed: three named scaffolds (octet emit bridge, paired infer widen with countable Merge readiness: ≥2 APPROVE (claude-opus-4-7 @37349/@37344 + composer-2.5 @37344/@37336), no open REQUEST_CHANGES (@37347 superseded), mergeable=MERGEABLE, CI pending ( — sent from eager-heron-120 |
|
cursor/composer-2.5 APPROVE (@37352) — Verified on tip Spot-check confirms reviewer claims: scaffold diagnostic at 04_infer.dag:601–614 / 945–946; paired emit note target_model.dag:5962; non-octet RED at match_infer_fail_open_audit_test.dag:235–239; DFS heuristic note 04_infer.dag:518; FLAG E walker body_lowering_fold.dag. PR delta 12 files. Merge readiness: ≥2 APPROVE (composer-2.5 @37352/@37344 + claude-opus-4-7 @37349), no REQUEST_CHANGES, mergeable=MERGEABLE, CI pending ( — sent from eager-heron-120 |
The merge from main brought emit_host_classical_not_ingested_equals_eval_test.dag into test/claim/manual/ — the emit_host wet transport class (hermetic discovery refuses it: emit_host_run_transport, no mock arm). Moved to the execution corpus home (src/v2/test/claim/execution/, Wet-profiled explicit batch) beside its 12 siblings; proven wet at the new home incl. the swapped-refuses RED control. Other #6512 witness files pass hermetically in place (rust_test, match_infer_fail_open_audit; body_lowering_match carries no test fns). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 5s rule, whole-corpus red burn-down (#6506) * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * Hermetic floor: pre-commit fmt hook (generated), execution-mode envelope on runnable profiles, checkout-read carve-out, bin-witness wet lane Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * Adaptive AIMD memory governor replaces the pinned spawn-width constants (operator ruling 2026-07-12) The hand-edited width machinery — per-shard peak samples, executor base overhead, usable-fraction, memory-derived width folds, spawn_width_cap pins, and the per-plan *_plan_spawn_width fns the executor evaluated by name — is DELETED. Run-time concurrency is now governed adaptively (TCP-shaped): - v1_compiler::memory_governor: AIMD admission against the slot's OWN cgroup budget (memory.high > memory.max > MemTotal; GUNBC_MEMORY_BUDGET_BYTES override). Graceful hold on creep (memory.current past 4/5 high-water, PSI some avg10 > 10, swap growth per sample) — swap/reclaim buffer the overshoot so creep is not loss; multiplicative back-off (halve, floor 1) only on hard events (memory.events high/oom_kill deltas); additive re-growth on calm completions; active==0 always admits (progress floor, counted forced_serial). Every degradation is typed, counted, and surfaced in the [governor] receipt line (DESIGN §5: loud bounded degradation, never an absorbing widen). Pure decision core unit-tested without cgroups (12 tests). - cli_run: DiscoveryWidthPolicy { Serial, Adaptive } replaces parallel_width; adaptive pool drains entry-groups through lazily admitted workers (one whole-tree index per worker, amortized across pulled groups); workers retire between groups when the window halves; undrained-queue-without-error refuses. Serial keeps the width-1 closure-drift oracle. - claim_executor: plan-evaluated spawn width deleted (with the absent-width-fn FATAL wiring-gap class); gate resolve-groups draw AdmittedSlots from the same governor; cgroup sensor fns single-authority in the governor module; walk memo key becomes a typed (entry, ExecutionMode) tuple (review follow-up). - .dag: RunnableDiscoveryBatch loses spawn_width_cap; RunnableMemoryClass degrades to payload-less Negligible|Substantial markers (the predicted-peak bytes were the hack); gunbc.ci_floor_measurement keeps only INTER-run rows; width witness cluster deleted; gunbc_ci_adaptive_width_note carries the model story and the dissolve-on (graph-derived per-node demand). - regen: std_execution_mode.rs twin registered (latent gap from the ExecutionMode re-home — fresh self-compile emitted it unregistered, so the regen gate would have refused on first execution); stage0 + stage0_core rosters updated; regen_stage0 --verify green (divergence 0). Proofs by execution (release): adaptive smoke ramps 1→2 workers and passes 3/3; RED control (1MB budget) pins width 1 with forced_serial=1 counted and still completes; whole-tree compile-clean green through the new plan schema; witness files green (profile, measurement, width, floor plan, disposition lens); generated-artifact regen gate green with zero drift; fmt clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Governor slow-start overshoot fix: admission pacing on first-cost digestion + MemAvailable budget fallback CI run 29180195694 (first governor run): the uncapped runner cgroup fell the budget through to MemTotal, and additive increase ran at unit-completion speed (instant skip decisions) while each worker's real demand (whole-tree index build, 3-5GiB) lands 30-60s after admission — width blasted 1→16 before any build allocated, current hit physical RAM at pool+2min, swap filled, PSI 68, the runner agent starved and GitHub killed the job. Fix 1 — admission pacing: at most one admitted-but-undigested worker at a time; the digest point is the front-loaded cost landing (index build + runner resolve returned), not first unit completion, so a slow first eval cannot freeze the pump, and a worker that dies before digesting clears its debt on release. Ramp rate becomes the index-build rate — the demand-relevant clock — and overshoot is bounded to one worker's build. Typed hold reason (AwaitFirstCost), episode-counted in the receipt as pacing_holds. Fix 2 — budget fallback order gains /proc/meminfo MemAvailable before MemTotal: on uncapped hosts the kernel's availability estimate excludes the co-tenant baseline (the runner agent) instead of handing the floor the whole box. Proofs: 15/15 governor unit tests (pacing hold/unblock, dead-worker debt clear, meminfo exact-key parse); calm smoke 3/3 PASS ramping to width 2 with receipt; RED control (1MB budget) pins width 1, forced_serial=1, completes. The 4 cli_run lib test failures are pre-existing environmental (tmp-fixture vs workspace-root pin), identical at the pre-fix head. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Governor: budget-exceeded is a hard event (reachable multiplicative decrease on uncapped runners) Run 29181858455 (paced governor): admission pacing and the high-water hold worked — [governor] holding admissions at 43.5GiB — but in-flight workers' own growth (request-major re-resolves of heavy closures, multi-GB each) blew through the 20% buffer to 52.6GiB in seventy seconds with zero new admissions, and on a runner whose cgroup sets no memory.high/max the memory.events counters never move, so the multiplicative-decrease arm was unreachable: hold was the governor's strongest response, and hold cannot shed demand. The budget is the declaration, so crossing it IS a hard event: halve the window (episode-counted with hysteresis — one halving per crossing, re-armed only below high-water so oscillation at the line cannot halve per poll), and should_retire drains workers between units, freeing their indexes. Three declared zones: below high-water admit+grow; high-water to budget hold (the buffer absorbs); above budget halve+drain. No new constant: the zone edges are the declared budget and the existing policy fraction. Receipt gains budget_exceeded=N. Proofs: 16/16 governor unit tests (exceed halves once per episode, hysteresis re-arm below high-water, drain reachable); RED smoke (1MB budget) fires the arm live — hard_backoffs=1 budget_exceeded=1 forced_serial=1, run still completes 3/3; calm smoke unchanged (ramp to 2, budget_exceeded=0). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Governor: creep-episode edge is multiplicative decrease (ECN semantics, not stop-and-hope) Run 29182481051 proved hold-only creep handling cannot save the box: the pacing ramp was correct, the hold fired at 47.9GiB, the budget-exceed halve fired at 51.7GiB — and the box still died at 52.7GiB eighty seconds later, because already-admitted workers' residency grows ~1GiB/min each (request-major closure accumulation) and the exceed line sits one gigabyte from physical death: no margin for drain latency plus the allocator's freed-page plateau. Creep IS the early congestion signal — TCP's ECN mark, not its loss. The first hold of a creep episode (high-water, PSI, or swap growth) now halves the window too, so workers drain while the high-water→budget buffer still has ~10GiB of margin. One halving per episode, re-armed on the next admission; the budget-exceed halve stays as the backstop; the creep arm moves ahead of window-full so a full window cannot mask the edge, and completions observe the same edge (the only polls at a full window). graceful_holds renamed creep_backoffs — the receipt now says what the episode does. Proofs: 16/16 governor unit tests (edge halves once per episode, drain reachable, re-arm on admission); RED smoke fires creep back-off, budget exceed, and progress floor live and still completes 3/3; calm smoke unchanged (ramp to 2, creep_backoffs=0). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Governor: measured-share headroom gate (predictive admission) + budget-exceed collapses to width 1 Run 29183064852 was the decisive datapoint on reactive-only control: the creep back-off caught the high-water crossing within one poll (41.287 vs 41.286 GiB) and halved 16->7, the budget-exceed halve fired at 51.7 — and the box still died at 52.7 GiB, because ~14 admitted workers' residency was maturing at ~18GiB/min, drain latency is a group boundary away, and exited workers' pages never return within a run (allocator plateau). Reactive arms observe demand minutes after the admission that committed it; at that lag they are structurally too late. The predictive complement, with no authored constant: the run measures its own per-worker share — memory.current at the first poll is the pool baseline, and the first slot's digest fixes share = current - baseline — and admission then requires current + share <= high-water. The old 2h26m run that sat stable at width 7 / 38.5GiB is the existence proof that an equilibrium exists; this gate finds it from the run's own measurements instead of the deleted calibration constants. Typed episode-counted hold (InsufficientHeadroom, headroom_holds), window untouched (prediction is not a creep event). Budget-exceed escalates from halve to collapse-to-1: it is TCP's timeout, not its duplicate-ACK — when the crossing is discovered a gigabyte from death, every growing worker beyond the first must stop at its next group boundary. Proofs: 17/17 governor unit tests (gate predicts below high-water, episode edges, resume on settle; exceed collapse + hysteresis re-arm); calm smoke arms the gate ('measured worker share ... headroom gate armed') and still ramps to 2, 3/3 PASS; RED smoke fires creep back-off, exceed collapse, and progress floor, still completes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Governor: admission ceiling at half the budget (the maturation reserve) + budget-chain doc sync Run 29183727188 exposed the last measurement lie: the headroom gate armed with a 0.48GiB share measured at the first worker's index-build digest, but the mature per-worker footprint is ~3.5GiB — admitted demand matures MINUTES after admission at ~7x its digest-time footprint, so any share measured at digest under-prices the future and the gate admitted the same fatal ramp (creep 16->7 at 41.2GiB, exceed collapse 7->1, dead at 52.5GiB, SIGTERM). The honest arm this yields is TCP's own ssthresh: admissions stop once memory.current crosses HALF the budget — the other half is the maturation reserve for in-flight growth the signals cannot see yet. Dimensionless policy fraction like the high-water line; no workload constant. On run 29183727188's curve this stops admission at ~25.7GiB / width ~8, and the 2h26m run that sat stable at width 7 / 38.5GiB is the existence proof that the resulting equilibrium fits. Typed episode-counted hold (AdmissionCeiling / ceiling_holds). Also syncs the budget-chain documentation cursor's review caught drifting (single-authority): gunbc_ci_adaptive_width_note and the module header now describe the implemented chain (memory.high > memory.max > MemAvailable > MemTotal) and the full controller (pacing, measured-share gate, ceiling, creep-edge halve, exceed collapse). Proofs: 18/18 governor unit tests (ceiling holds past budget/2 while calm, episode-counted, resumes below; window untouched); calm smoke ramps to 2 with ceiling_holds=0; RED smoke completes with every arm counted; whole-tree compile-clean green on the .dag note edit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * githooks_pre_commit_emit: explicit dissolve-on for the concat-built shell (review follow-up) The pre-commit hook's shell-via-concat carried its medium-as-string debt implicitly through the pre-push sibling's roster; the note now cites its own dissolution trigger (grammar-path shell emission superseding the concat-built literals, one trigger for the hook-emit family). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Dissolve single-variant ExecutionMode predicates (review follow-up) execution_mode_is_record was dead on both surfaces (zero callers); execution_mode_is_hermetic was a single-variant Bool nickname over the coproduct. Effect-io host dispatch sites now read directionally through execution_mode_is_wet_dispatch (the semantically-real fact: Wet|Record dispatch to live transports, Hermetic replays fixtures); witness-test assertions go through execution_mode_eq against the expected variant. Seed regenerated via regen_stage0 (16-line drop mirrors the .dag). Proof: crate builds clean with the fns deleted (no Rust callers); effect_io_host_mode_test 4/4 PASS by execution (wet_does_not_replay + hermetic_write_fail_closed discriminate the arm-flip); profile and ci_floor_plan witness umbrellas PASS; zero residual references. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Resolve main merge conflicts (auto-WIP-commit swept the conflicted tree) ci_layer_roots: union — wet-exclusion entries + main's test/fixture/floor_skip/ dir-grain row. runnable_resource_profile_witness_test: union — execution_mode_eq import + main's #6479 live-tree disposition decl. ci_floor_measurement_per_shard_test: deletion stands — its witness subjects (pinned-width measurement rows) were retired by the governor; main's edit there was the mechanical disposition decl. Proven: profile/ci_floor umbrellas + drift gate PASS on the resolved tree. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * WIP: CI debug * Fast-lane 5-second rule: cooperative eval deadline + long/ test home (operator ruling 2026-07-12) A witness whose own eval reaches 5s does not run in per-PR discovery. Three layers, one authority: - Authority: gunbc_ci_fast_lane_witness_eval_budget (Second, =5) + gunbc_ci_fast_lane_eval_budget_ms projection in v2.workflow.ci_floor_plan, with the rule note. claim_executor reads it fail-closed when a plan schedules a discovery batch (missing/mistyped row refuses the run; discovery-free plans never read it). - Enforcement: cooperative per-witness eval deadline in v1_interpreter (checked every 4096 eval dispatches; typed EvalBudgetExceeded unwinds from inside eval — in-process worker threads have no kill authority, the Phase A lesson). Armed in run_claim_measured from the ctx-level budget; resolve/index cost is infra and never counted (operator carve-out). claim_batch gains --eval-budget-ms for local audits. - Home: test/claim/long/ excluded from discovery at dir grain (ci_layer_roots + note). First receipted residents: s1_closure_receipt (90+min whole-closure re-parse, the run-29183446733 wedge) and self_host_module_emit_derisk (~31s/witness), modules renamed v2.test.manual.* -> v2.test.long.*. Proof by execution: RED control fires (1ms budget on a 19ms-eval witness -> typed FAIL naming it); calm control passes unbudgeted; the wedge witness dies in 10s total instead of 90+min (4s resolve uncounted, refusal at 5.002s eval); moved files resolve at their new home; drift gate PASS. This is the wedge tourniquet: the class that burned 243 of 270 billed minutes in silence now fails red in seconds, by name. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * Home #6512's classical_not equals_eval witness in the execution corpus The merge from main brought emit_host_classical_not_ingested_equals_eval_test.dag into test/claim/manual/ — the emit_host wet transport class (hermetic discovery refuses it: emit_host_run_transport, no mock arm). Moved to the execution corpus home (src/v2/test/claim/execution/, Wet-profiled explicit batch) beside its 12 siblings; proven wet at the new home incl. the swapped-refuses RED control. Other #6512 witness files pass hermetically in place (rust_test, match_infer_fail_open_audit; body_lowering_match carries no test fns). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * CI retrigger: supersede wedged queued run 29206348113 (cancel would not propagate) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * Burn down run-29208529942's 11 floor failures (first full-floor receipt: 12min, typed per-witness list) Three classes, all addressed: Budget class (6 witnesses / 5 files at 5.0-6.4s on the runner): moved to long/ homes — the two dag-side files the first sweep missed (module_graph import_closure_live, reference_closure_equivalence; dag/test/claim/long/ now exists), dag_import_block_lexeme_stamp, syntactic_audit_witness, string_head_linear. Plus proactive moves of the audit's remaining >5s native-heavy witnesses that the stride blind spot had silently greened and this run's node-frontier selection happened to skip (derived_machinery_exempt_live 21.7s, inert_lens_hygiene 19.3s, shadow_mask_red / live_anchored_modules_clean 9.9s): latent reds under the completion-side check, moved before they fire. The local timing distribution is bimodal (>=5s or <3s; empty 3-5s band), so runner slowdown cannot create new stragglers from the passing set. IsExecutable class (3 witnesses / 2 files): double enrollment — parse_test floor/perf and dag_compile_clean_perturb_receipts were declared BOTH in bin_witness_wet_entries (the Wet bin lane) and as commit_workflow CorpusWitnessKind rows, so the corpus projection ran them a second time inside the hermetic discovery batch where run_witness_bin refuses. Deleted the commit_workflow rows (§3 one-fact-one-roster; the bin lane keeps per-PR coverage), recorded beside the deletion. Bare-false class (2): medium_structure exception-roster growth ratchet bumped 58 -> 59 for the justified pre-commit-emitter row (the ratchet doing its job); floor_diff_observe_witness moved to the execution corpus — it shells real git diff, which hermetic mode folds into its Fail arm, so its home is the Wet per-PR lane (green there incl. fail-closed arms). Named follow-on: a git read-only observation carve-out (diff between SHAs is commit-deterministic, same argument as the repo-tree read carve-out). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * Resolve #6516 merge: governor pool keeps main's floor observability (ShardStyle threading, categorization, fmt) The auto-WIP commits 081c00a/4cdaca3e captured the merge mid-resolution; this completes it: run_discovery_rows takes both fast_lane_eval_budget_ms (mine) and ShardStyle (main's #6516); Serial arm passes shard_id 0/count 1; adaptive workers get spawn-ordinal shard ids with spawn-time target width. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * Repoint 4 stale entry paths left by the long/ move round (caught: module_grain equivalence tests red) The dag-side/second-round long/ moves postdated the 12-min floor receipt and the 212/0 lib-suite run, so nothing had re-executed these references: - cli_run.rs module_grain sample entries (x2) -> dag/test/claim/long/ (both equivalence tests + wiring-perturbation control green locally, 162s) - extdeps_external_authority_transport ClaimRun rows (x2) -> src/v2/test/claim/long/ (both claims PASS by execution at new homes, 10.0s / 21.8s) - complexity_linearity_audit.rs diagnostic pointer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * WIP: CI debug * Fast-lane eval budget: denominate in thread CPU time, not wall (fix realization_vocab_clean_tree contention flake) Run 29215148169 red on realization_vocab_clean_tree_holds at 5004ms > 5000ms in the hermetic discovery batch. Its genuine eval is ~3.4s (measured local eval_self); the extra ~1.6s is cold-I/O (a ReadsLiveTree whole-corpus scan) plus governor time-slicing under the concurrent worker pool. By the operator 5s rule's own 'assuming the infra isn't the problem' clause, a 3.4s-compute witness must not be misclassified as a long/ resident because CI contention inflated its WALL time. Root fix: the fast-lane budget (both the cooperative stride-poll deadline and the completion-side check) now measures THREAD CPU TIME (CLOCK_THREAD_CPUTIME_ID), which advances only while the thread runs on a core. A genuine non-terminating eval burns CPU and is still caught; a bounded scan whose wall time was inflated by I/O waits or scheduler contention is not. Switching wall->CPU can only make witnesses pass more easily (CPU <= wall), so it introduces no new failures. Proven by execution: clean_tree --eval-budget-ms 5000 -> PASS (CPU < 5s); --eval-budget-ms 500 -> REFUSE at 503ms (deadline still fires accurately). budget_completion unit tests green; all-targets compile clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * WIP: CI debug * WIP: CI debug --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Land Wave 1 exit witness
emit_host_classical_not_ingested_equals_eval_holds: first real ingested fn body proven emit→compile→run→behaviorally-equal end-to-end forclassical_not.PATH 1 (emit bridge): At match sites where scrutinee is
Int(octet wire) and patterns/bodies are bool-kw literals, emit lowers toscrutinee != 0with octet0/1arm bodies — match domain stays boolean;Intat fn boundary is serialization only.Infer: Restores int-channel arm typing (
infer_match_bool_arm_body_type) required foringested_classical_not_real_infer_holdsand equals_eval green.Audit fix: Reverts mistaken
classical_not_int_match_arrow_real_infer_refuses_holdsflip; complement witnesses renamed to*_refuses_unsupported_pattern_holds(fail-closed-correct fordag_complement_lit_*patterns).Cleanup: Removes stray WIP
body_lowering_match.dagfrom branch scope (kept locally under.git/info/exclude).Test plan
Wet
claim_batchon tipe1a39e55a4— 9/9 PASS:Worker attestation
claim_batchwet — 9/9 PASS (see above).