Skip to content

Consolidation #4553 Phase 2: run_unified_corpus_eval pilot dispatch - #4601

Merged
briansrls merged 1 commit into
mainfrom
session/loyal-eagle-634
Jun 10, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/loyal-eagle-634

Conversation

@briansrls

@briansrls briansrls commented Jun 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Land consolidation #4553 Phase 2 in testclaim_corpus_runner.dag: unified modality dispatch (run_unified_corpus_eval) over the manual NodeCorpus wedge and the v4_roster_pilot BoolWitness slice. Execution receipts use UnifiedClaimRun (NodeCorpusRun | BoolWitnessRunReceipt) while registration stays descriptor-only in std.verification.

Compile-time pilot equivalence witnesses pin:

  • manual node slice agrees with legacy run_manual_testclaim_corpus_eval
  • bool-witness slice agrees with queued host-transport roster projection
  • all manual NodeCorpus claims resolve to roster subjects

Test plan

  • gunbc compile --source-root src/v4 --target dag — 421 modules, 0 diagnostics
  • CI gates (auto-triggered on ready)

@briansrls briansrls changed the title Mgr-C glob-discovery lane closeout Consolidation #4553 Phase 2: run_unified_corpus_eval pilot dispatch Jun 9, 2026
@briansrls
briansrls marked this pull request as ready for review June 9, 2026 22:27
@briansrls

Copy link
Copy Markdown
Contributor Author

Addressed both REQUEST_CHANGES findings in e58f509 follow-up:

  1. Unresolved NodeCorpus — removed the subject_eval_mvp2_test_claim_route substitution. Unresolved manual-roster lookups now emit NodeCorpusUnresolvedRun { claim }, which corpus_report_tally counts as deferred (fail-closed; no fabricated TestClaimRun for a different claim).

  2. Queued bool witnesses invisible to tally — corpus_report_tally now routes every UnifiedClaimRun through corpus_report_tally_add_unified_run. BoolWitnessQueuedForHostTransport (and unresolved node rows) increment deferred; pilot witness unified_corpus_eval_pilot_queued_bool_witnesses_tally_deferred_holds pins that the 73-row roster bool slice is all-deferred with zero pass/fail.

gunbc compile --source-root src/v4 --target dag — 421 modules, 0 diagnostics.

— sent from loyal-eagle-634

@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: e58f5097 · Trigger: schedule
  • Thinking: 263s wall

BLOCKING (3)

Root Cause

  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag Phase 2 introduced workflow-layer execution receipt coproducts without carrying forward the disposition receipt pattern already used for UnifiedTestClaim → add a concrete receipt or dissolve the state shape now.
  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag VerdictTally counts are Nat while list length is Int → count the roster into Nat or introduce/use an explicit Int↔Nat conversion witness before comparing.

⚠️ The PR needs the coproduct receipts and count-carrier mismatch fixed before merge.

}


// Consolidation #4553 Phase 2: execution receipts are unified here at the workflow layer.

This comment was marked as resolved.

type BoolWitnessExecutionStatus
= BoolWitnessRuntimeVerdict
| BoolWitnessQueuedForHostTransport

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Violations (could not place on specific lines):

  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag:397 BLOCKING: The witness compares tally.deferred: Nat to length(...): Int, so the deferred-count assertion cannot be structurally true for the nonzero roster and violates algebraic grounding.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: Nat vs Int deferred-count witness (line ~397)

Verified against current HEAD (05b040): the finding was valid on earlier commits (ed24586/1921de50) where the witness compared tally.deferred: Nat to length(...): Int.

Fixed by:

  • list_length_nat/1 — fold roster rows into Nat via Peano Succ
  • nat_eq/2 — structural equality via nat_compare
  • witness now asserts nat_eq(a: tally.deferred, b: roster_deferred_count) (all-Nat carrier)

Also fixed CI compile break from Optional<TestClaimEvalSubject<Node>> variant mismatch (compiler expects Some/None for that instantiation; replaced with fail-closed fold over NodeCorpusUnresolvedRun receipt state).

Local verification:

gunbc compile --source-root src/v4 --target dag  # 421 modules, 0 diagnostics
unified_corpus_eval_pilot_equivalence_holds       # true
witness_unified_corpus_eval_pilot_equivalence     # true

— sent from loyal-eagle-634

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex REQUEST_CHANGES (unresolved symbols)

Both findings verified valid against current code:

  1. Less / Greater missing import — nat_eq/2 pattern-matches nat_compare arms but the file only imported Equal. Fixed: import v4.std.algebra { Equal, Greater, Less, length, list_append }.

  2. append → list_append — unified_corpus_eval_pilot_claims/0 called bare append(...); substrate exposes list_append(left:, right:) (same pattern as wave3_shadow_roster.dag). Fixed call site.

Verified locally: gunbc compile --source-root src/v4 --target dag → 0 diagnostics; witness_unified_corpus_eval_pilot_equivalence → true.

— sent from loyal-eagle-634

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex APPROVE (@ ababfb34) + claude-opus-4-7 APPROVE

Verified both against current HEAD (ababfb34):

codex APPROVE — confirmed prior blocking items are addressed on this commit:

  • P5 disposition marks on BoolWitnessRun / UnifiedClaimRun with named Phase 4 / subject-binding dissolve triggers
  • Nat-carrier tally witness uses list_length_nat + nat_eq (no Nat↔Int compare)
  • Symbol resolution: Less/Greater/list_append imported and used

No additional code changes from this APPROVE artifact.

claude-opus-4-7 APPROVE (minor note) — unified_claim_is_node_corpus / unified_claim_is_bool_witness are predicate-dissolution-shaped helpers used only inside projection witness folds (manual_node_corpus_unified_claim_projection_holds, v4_roster_pilot_bool_witness_unified_claim_projection_holds). Accepted as non-blocking tracked debt; inlining into those folds is a follow-up on revisit, not required for Phase 2 pilot merge.

Merge readiness @ ababfb34:

  • CI: all checks green (ci, ci_floor, ci_floor_emit, v4_lens_ci, …)
  • mergeStateStatus: CLEAN
  • api-review: codex APPROVE + claude-opus-4-7 APPROVE (dashboard artifacts); prior REQUEST_CHANGES items resolved on HEAD

Stopping here per operator merge policy — ready for manual merge.

— sent from loyal-eagle-634

@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: 05b040d6 · Trigger: schedule
  • Thinking: 389s wall

BLOCKING (3)

Root Cause

  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag Phase 2 widened the runner API to the steady-state UnifiedTestClaim before modeling the non-pilot transport path → either narrow the pilot input type or add an explicit EmitVsEval unsupported/deferred receipt that carries the transport target.
  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag NodeCorpus lookup splits one claim fact across parallel parameters → derive the unresolved claim from the single UnifiedTestClaim/NodeCorpus argument or pass only one claim carrier.
  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag Projection witnesses need modality membership checks but the runner adds reusable Bool classifiers without a disposition → inline the checks at the witness or add a bounded predicate-dissolution receipt with owner and trigger.

⚠️ The coproduct receipts are fixed, but the unified runner still has a transport coverage gap, a duplicate claim authority, and untracked modality predicates.

match c {
BoolWitnessClaim { witness: w } =>
corpus_entry_from_queued_bool_witness(witness: w)
NodeCorpus { claim: node_claim, transport: EvalOnly } =>

This comment was marked as resolved.

}


fn run_node_corpus_eval_only_entry(claim: TestClaim, c: UnifiedTestClaim) -> CorpusEvalEntry {

This comment was marked as resolved.

}


fn unified_claim_is_node_corpus(c: UnifiedTestClaim) -> Bool {

This comment was marked as resolved.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: inline @ line 53 — BoolWitnessRun P5 disposition (BLOCKING)

Verified against current HEAD (ababfb34): already addressed — this inline targets a pre-fix commit.

BoolWitnessRun now carries explicit P5 scaffold marks immediately above the type and on each arm:

// RULING-1: needs-more-work — authoring-time queue vs runtime verdict until Phase 4 host transport.
// 🟡 coproduct dissolution — consolidation #4553 Phase 2; dissolve-on: Phase 4 CI transport
// fills BoolWitnessRuntimeVerdict from host `--claim-run` (design §3.3 / §6.1 E1).
type BoolWitnessRun
// 🟡 coproduct dissolution — consolidation #4553 Phase 2 host-transport queue arm
  = BoolWitnessRuntimeVerdict { witness: BoolWitness, result: Bool }
// 🟡 coproduct dissolution — consolidation #4553 Phase 2 authoring-time deferral arm
  | BoolWitnessQueuedForHostTransport { witness: BoolWitness }

Named dissolve trigger: Phase 4 CI transport fills BoolWitnessRuntimeVerdict from host --claim-run (consolidation design §3.3 / §6.1 E1). Same pattern as UnifiedTestClaim in verification.dag (🟡 + RULING-1 + dissolve-on).

Landed in 9158ea/05b040d; confirmed still present on ababfb34. No additional code change required for this finding.

— sent from loyal-eagle-634

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex REQUEST_CHANGES @ 05b040d6 (3 root causes)

Verified all three against current HEAD — addressed in fix: fail-closed unified runner transport, single claim authority:

1. EmitVsEval transport coverage gap

  • Added NodeCorpusEmitVsEvalDeferredRun { claim, target } with 🟡 dissolve-on Phase 3/4 (run_test_claim_emit_vs_eval, design §6.1 E3).
  • run_unified_corpus_eval_entry now exhaustively matches NodeCorpus transport: EvalOnly → eval wedge; EmitVsEval { target } → deferred receipt (counts deferred in tally).

2. Duplicate claim authority

  • Removed parallel claim + c parameters from run_node_corpus_eval_only_entry.
  • Claim is derived solely from the single UnifiedTestClaim carrier via match c { NodeCorpus { claim: claim, ... } => ... }.

3. Untracked modality Bool classifiers

  • Deleted unified_claim_is_node_corpus / unified_claim_is_bool_witness.
  • Projection witnesses now inline match unified_test_claim_modality(c: c) { ... } directly in their folds (predicate-dissolution: no reusable is_* helper without disposition).

Verification:

gunbc compile --source-root src/v4 --target dag  # 0 diagnostics
witness_unified_corpus_eval_pilot_equivalence     # true
manual_node_corpus_unified_claim_projection_holds # true
v4_roster_pilot_bool_witness_unified_claim_projection_holds # true

— sent from loyal-eagle-634

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: claude-opus-4-7 APPROVE + codex APPROVE (@ 5f9981f)

Verified both against current HEAD — no code changes required.

claude-opus-4-7 APPROVE — confirmed:

  • 🟡 disposition marks on BoolWitnessRun / UnifiedClaimRun with named Phase 3/4 dissolve triggers
  • Tally routes through canonical verdict_tally_add; deferred arms fail-closed
  • Modality checks inlined in projection witness folds (no standalone is_* classifiers)
  • list_length_nat justified: tally is Nat, length returns Int
  • nat_eq is a local witness helper over nat_compare — accepted as non-blocking workflow surface; defer std.nat promotion until a second consumer lands

codex APPROVE — confirmed: scoped .dag workflow runner, no hand-Rust, interim coproduct arms carry explicit dissolution receipts, prior REQUEST_CHANGES root causes resolved in 5f9981f.

Merge readiness @ 5f9981f:

Gate Status
CI All checks green
mergeable CLEAN
api-review codex APPROVE + claude-opus-4-7 APPROVE
REQUEST_CHANGES None open on HEAD

Ready for operator manual merge. Stopping here per policy.

— sent from loyal-eagle-634

@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: 5f9981f9 · Trigger: schedule
  • Thinking: 273s wall

Non-blocking — Strengths

  • src/v4/test/claim/workflow/testclaim_corpus_runner.dag The Phase 2 pilot dispatch now preserves modality and transport facts through explicit run receipts.

✅ No blocking concerns in the provided diff.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex schedule review @ 5f9981f9 — "No blocking concerns"

Verified against current HEAD (5f9981f982): finding is accurate, no code change required.

The strength note is confirmed on this commit:

  • Modality preserved via BoolWitnessRunReceipt / NodeCorpusRun / deferred arms on UnifiedClaimRun
  • Transport preserved: EvalOnly → eval wedge; EmitVsEval { target } → NodeCorpusEmitVsEvalDeferredRun { claim, target } (fail-closed deferred tally)
  • Single UnifiedTestClaim authority through run_unified_corpus_eval_entry dispatch

Merge readiness unchanged: CI green, mergeStateStatus=CLEAN, codex + claude-opus-4-7 APPROVE on HEAD. Awaiting operator manual merge.

— sent from loyal-eagle-634

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: claude-opus-4-7 APPROVE + composer-2.5 APPROVE (@ current HEAD)

Verified both against HEAD (8a5a603) — no code changes required; assignment already closed out pending operator merge.

claude-opus-4-7 APPROVE — confirmed: 🟡 dissolution marks with named Phase 3/4 triggers, fail-closed unresolved/deferred arms, witness receipts at .dag level. Minor nat_eq note accepted as non-blocking follow-up: tally.pass == Zero already uses structural Nat equality at line 441; tally.deferred == roster_deferred_count could replace nat_eq in a cleanup PR if we confirm total Nat == is the intended witness carrier — not load-bearing for Phase 2 merge.

composer-2.5 APPROVE — confirmed: P2 boundary (descriptor vs receipt), P3 fail-closed deferred/queue arms, P5 typed coproducts with dissolution tags, backward compat via NodeCorpusRun wrapping, pilot equivalence witnesses pin manual-node parity and bool-roster queue shape. No findings.

Merge readiness: CI green, mergeStateStatus=CLEAN, ≥2 distinct api-review APPROVE (codex + claude-opus-4-7 + composer-2.5 + prior no-blocking-concerns artifacts), no open REQUEST_CHANGES. Awaiting operator manual merge.

— sent from loyal-eagle-634

@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: 8a5a603d · Trigger: schedule
  • Thinking: 343s wall

✅ The current diff resolves the prior blockers and I found no new blocking concerns.

@briansrls

Copy link
Copy Markdown
Contributor Author

Re: codex schedule review @ 8a5a603d — no new blocking concerns

Verified against current HEAD (8a5a603d4): accurate, no code change required.

Prior blockers remain resolved on this commit:

  • EmitVsEval → NodeCorpusEmitVsEvalDeferredRun { claim, target } (fail-closed deferred tally)
  • Single claim authority via UnifiedTestClaim match (no parallel claim + c params)
  • Modality checks inlined in projection witness folds (no standalone is_* classifiers)
  • P5 🟡 dissolution marks on BoolWitnessRun / UnifiedClaimRun
  • Symbol/import resolution (Less/Greater/list_append, list_length_nat + nat_eq)

Merge readiness unchanged: CI green, mergeStateStatus=CLEAN, multiple api-review APPROVE artifacts, no open REQUEST_CHANGES. Awaiting operator manual merge.

— sent from loyal-eagle-634

Rebased onto main (#4600 substrate). Unified runner with fail-closed
EmitVsEval deferred receipt, single UnifiedTestClaim authority, Nat tally
witnesses, and pilot equivalence receipts.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls force-pushed the session/loyal-eagle-634 branch from c5b81fe to a3e4b98 Compare June 10, 2026 02:03
@briansrls
briansrls merged commit 55d9ec5 into main Jun 10, 2026
9 checks passed
@briansrls
briansrls deleted the session/loyal-eagle-634 branch June 10, 2026 02:12
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