Skip to content

CI floor: prove whether the 64-row bin-witness wet batch executes per-PR — it is absent from three job logs and its observability receipt emits zero rows - #7857

Merged
briansrls merged 10 commits into
mainfrom
session/wise-ibex-779
Aug 6, 2026
Merged

briansrls merged 10 commits into
mainfrom
session/wise-ibex-779

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 5, 2026 •

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session wise-ibex-779.
Pushing to session/wise-ibex-779 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive. (dashboard node adhoc-0c003561-2bf; no GitHub issue.)
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

Question: does the ~64-row bin_witness_wet_entries batch actually execute on every PR, given it is absent from several job logs and target/floor-wet-witness-row-outcome-receipt.tsv reports zero rows?

Answer (by execution, not log grep alone):

  1. Scheduling is enrolled. New witnesses in ci_floor_plan_witness_test.dag prove the bin batch is present in gunbc_ci_floor_ordinary_batches and that the live floor schedules four discovery corpora (hermetic floor + execution + bin-witness + pr-native wet). Log absence of ✓/PASS lines after hermetic discovery cannot, by itself, prove the batch never ran.

  2. The zero-row receipt is an observation problem, not a skipped mechanism. On main, PR Schedule live_rust closing contract on bin_witness wet lane #7698's worker receipt + coordinator replay do run (wet-witness-row-outcome-receipt started/completed in the phase journal), but emit zero [wet-witness-row-outcome] lines — the receipt truthfully reports 0 row(s). That collapses executed / selection-skipped / batch-not-reached into one green surface (DESIGN §5 absorbing-fallback at the observation layer).

  3. This PR extends observation so the next CI run can discriminate: discovery batches log as bin-witness-corpus[...] / execution-corpus[...] (not indistinguishable discovery-corpus[...]); coordinator replay rows and receipt row_count persist into GUNBC_FLOOR_PHASE_JOURNAL; the ci/falsifier post-step dumps the wet receipt TSV beside the phase journal. bin_witness_wet_per_row_actions_log_observation_gap_note is updated with the scheduling read and the dissolve-on (measured CI grep with run/job IDs for live_rust_observation_matches_actions_subject).

Still open after merge: whether zero rows means the bin batch produced no witness_row_costs rows vs a worker/coordinator path mismatch — the observation extension is the discriminating receipt that closes that fork on the next green run.

Incidental receipt: heal's heal-author-commit-required artifact has been empty on every run since landing (HealAuthorCommitRequired names both workflow paths; upload reports "No files were found") — measured on this lane; fix tracked in #7830 (include-hidden-files derived from the author-commit roster).

Test plan

  • claim_batch --wet --entry dag/tools/generated_artifact_gate.dag --function main — drift gate PASS (committed ci.yml / falsifier.yml match expected_ci_yml / expected_falsifier_yml)
  • claim_batch --wet --entry dag/tools/generated_artifact_gate.dag --function main_wet — regen PASS
  • claim_batch --entry src/v2/test/claim/ci_floor_plan_witness_test.dag --function ci_floor_plan_witnesses — schedule witnesses PASS (includes witness_live_floor_schedules_bin_witness_wet_batch, witness_live_floor_discovery_batch_count_is_four)
  • claim_batch --entry src/v2/workflow/ci_floor_peak_emit_test.dag --function ci_floor_peak_post_emit_matches_golden_holds — post-step emit golden PASS
  • CI green at head 40e800e — build, regen, heal_generated_artifacts, ci (all SUCCESS; ci within 65-minute budget)

@gunbai-bot
gunbai-bot Bot force-pushed the session/wise-ibex-779 branch from 1f6ec4e to e84f8a4 Compare August 5, 2026 19:04
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
The first draft cited "#7770 twice, #7791, #7835, #7857". Two errors:
#7770 hit the author-commit-required class three times on 2026-08-05
(ci.yml at 04:39 and 17:42, falsifier.yml at 06:34), and #7835 was only
a prospective warning, never a confirmed incident — the real fourth PR
is #7772. Verified against this lane's dispatch receipts rather than
recall, and the count is now stated as a floor rather than a census.

A wrong enumeration inside a canonical carrier is the citation class
DESIGN §3 names, so it gets the same bar as any other cited fact.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 8 commits August 5, 2026 20:20
Co-authored-by: Cursor <cursoragent@cursor.com>
Rebase merged #7856 path_intent cgroup ascent with wet receipt post-step;
main_wet restores committed workflow bytes for heal author-commit gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
Class B pool-coincidence: stripped file resolved only when an unrelated
closure dragged md_helpers into the pool. Whole-tree compile-clean after
workflow yml commit exposed the latent main defect; restore imports per
sibling plan modules until closure-independent binding lands.

Co-authored-by: Cursor <cursoragent@cursor.com>
Main already restored md_helpers imports in #7872; keep file byte-identical
to main so this PR carries only the wet-batch observation work.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the session/wise-ibex-779 branch from 6bcb8fa to 40e800e Compare August 5, 2026 20:28
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
Import-stripped plan resolved only by pool-membership coincidence;
whole-tree compile-clean exposes bare references to md_helpers and
markdown types. Same fix as #7857.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
Import-stripped plan resolved only by pool-membership coincidence;
whole-tree compile-clean exposes bare references to md_helpers and
markdown types. Same fix as #7857.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 5, 2026 21:52
gunbc-ci-auto-heal and others added 2 commits August 5, 2026 22:12
…size.

Thread spawns_host_compiler from RunnableDiscoveryBatch through BatchUnit
into run_discovery_batch_node so bin-witness vs execution lanes stay
correctly labeled even if the execution roster grows past the old count
heuristic threshold.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls pushed a commit that referenced this pull request Aug 6, 2026
…les from the path roster (#7830)

* WIP: import -> namespace (import deletion)

* chore: regenerate drifted generated artifacts (ci auto-heal)

* Namespace closure: three prerequisite rows in front of reference-derived-closure

namespace-reference-derived-closure carried a six-capability set-difference
closing contract in which every row read Unavailable, while the node itself was
the only dispatchable thing in the lane -- one startable row standing for three
separable pieces of work with different substrates.

The cut follows the contract's own triggers, which already record what each
capability waits on:

  namespace-structural-observations   4 caps, P2aStructuralCandidateProducer7515
  namespace-cross-file-provenance     1 cap,  P2aReferenceDependencyProjection7515
  namespace-pool-independence         1 cap,  P2aPoolIndependentDependencyProjection7515

The first two are parallel -- no dependency runs between the same-file rules and
the cross-file projection. Pool independence depends on cross-file provenance
because a differential needs a projector to perturb.

No new identity was minted for integration or for the census.
namespace-reference-derived-closure keeps its durable identity and now denotes
the aggregate handback (its first_slice moved; its boundary, which still covers
all six, did not). namespace-ambiguity-discharge keeps its identity and its
existing dependency on the closure node.

The three new rows are deliberately ExecutionContractUnspecified. Each first_slice
names authoring its own closing check as its first act, per
v1_lane_binding_survey_note: the contract follows the witness, never precedes it.
The derived closing-contract tasks for the two startable rows are the honest
fail-closed state, not a gap; pool-independence gets none because it is
dependency-held, and could not carry one anyway -- its differential compares an
output shape its prerequisite has not yet produced.

Also adds roadmap-receipt-continuity (roadmap-runtime, off the namespace spine):
a receipt that was valid and is now absent refuses unless an explicit revocation
names the exact node, the exact record, a reason and its disposition. Motivated
by #7739, where a branch spent real effort reconstructing an acceptance record
that already existed because nothing refused when it went missing. Distinct from
startable_nodes_missing_closing_contract, which finds nodes that never had a
check rather than accepted state that vanished.

Evidence, by execution on this tree:
- roadmap_authority_test: 42/42 witnesses PASS
- generated_artifact_drift_test: 7/7 PASS
- ROADMAP.md regenerated via main_wet on dag/tools/generated_artifact_gate.dag;
  the projection shows reference-derived-closure requiring the two new
  prerequisites, and derived closing-contract tasks appearing for exactly the
  two startable unbound rows.

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

* WIP: import -> namespace (import deletion)

* Remove stray empty file committed by WIP auto-commit

An empty file named 'true' was created in the worktree by a shell-quoting
mishap while sending dashboard messages, then picked up and committed by
the WIP auto-commit process. It is not on main and carries no content.

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

* WIP: import -> namespace (import deletion)

* Regenerate ci.yml: heal repair artifact publishes its hidden payload

Author-committed because the GitHub App lacks workflows:write, so the
heal job can detect this drift but can never push the fix.

Emitted from the ci_workflow.dag change in this branch; the value is
derived from author_commit_required_committed_artifact_paths(), not
hard-coded.

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

* Correct the incident enumeration in the hidden-files note

The first draft cited "#7770 twice, #7791, #7835, #7857". Two errors:
#7770 hit the author-commit-required class three times on 2026-08-05
(ci.yml at 04:39 and 17:42, falsifier.yml at 06:34), and #7835 was only
a prospective warning, never a confirmed incident — the real fourth PR
is #7772. Verified against this lane's dispatch receipts rather than
recall, and the count is now stated as a floor rather than a census.

A wrong enumeration inside a canonical carrier is the citation class
DESIGN §3 names, so it gets the same bar as any other cited fact.

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

* Regenerate ci.yml against merged main (author-committed)

The merge brought in 52 commits of main, and the generated-artifact merge
driver keeps this side's copy for generated paths, so the merged ci.yml
was this branch's pre-merge bytes: it was missing main's new registered
plans and stage0 modules in AUTHORED_CONFLICTS, the heal commit's
--no-verify, several step ids, and a test-negation respelling.

Regenerated from the authority rather than hand-merged. The output now
differs from origin/main by exactly one line — the include-hidden-files
key this branch adds — which is the check that the regeneration is
correct rather than a plausible-looking text merge.

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

* WIP: import -> namespace (import deletion)

* WIP: import -> namespace (import deletion)

* Remove the floor/heal gating model change: it belongs to #7882, not here

review 49102 is correct and this was my error. ci_workflow.dag declared
needs: [build, regen, heal_generated_artifacts] with a job-level if, while
the committed ci.yml carried neither -- an internally inconsistent PR that
would have failed ci_yaml_parse_witness, since expected_ci_yml() serializes
the model.

The cause was mechanical rather than a decision: the gating work was in this
worktree when the WIP auto-commit picked it up and pushed the .dag half,
while the regenerated ci.yml was discarded by a local reset moments later.
The two halves were split across a push boundary.

The fix is removal, not regeneration. That change is not in this PR's scope
and already exists as #7882, authored on main with its own witnesses and a
proven RED control. Regenerating ci.yml here would have made this PR
self-consistent by duplicating another PR's change, which is the worse
resolution of the two.

The three files are restored to cfea75a, the last head where this branch
carried only the heal-artifact fix. Regen after the restore produces no
ci.yml drift, which is the check that model and artifact now agree.

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

---------

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 591e68a into main Aug 6, 2026
5 checks passed
@briansrls
briansrls deleted the session/wise-ibex-779 branch August 6, 2026 00:38
gunbai-bot Bot pushed a commit that referenced this pull request Aug 6, 2026
Both #7763 and #7857 touched dag/gunbc/ci_layer_roots.dag, the same file this
branch deletes two long-lane roster rows from. The textual merge is clean, which
is exactly the case worth re-executing rather than trusting: a roster defect can
live only in the composition of two individually correct changes.
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