Skip to content

Provenance ingest at CI floor runtime: make v2.lens.affected_set node-closure LIVE during the floor pass (host_source_root_ingest_manifest currently Empty) so node-level pruning replaces the Rust diff->declaration / node-touch bridge — the blocker for Step 5 full-deletion in docs/plans/affected-set- - #6105

Closed
gunbai-bot[bot] wants to merge 34 commits into
mainfrom
session/quick-carp-343

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session quick-carp-343.
Pushing to session/quick-carp-343 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.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

briansrls and others added 30 commits July 1, 2026 13:28
Populate an ephemeral host_source_root_ingest_manifest during floor skip
so v2.lens.affected_set node-closure can drive witness pruning, falling
back to the Rust seed bridge when ingest is not live.

Co-authored-by: Cursor <cursoragent@cursor.com>
Mark the floor provenance-ingest overlay block with a named dissolution
trigger tied to affected-set-precompute-pruning Step 5, and drop the
parallel manifest substring grep in favor of floor_provenance_ingest_is_live.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve InferredTree.root from the live ingest provenance row for the
entry file (not edit_loci.first), and stop shadowing Ok(false) with the
seed bridge when the .dag closure path is live.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Propagate provenance entry-root and frontier failures as Err (triggering
seed-bridge fallback) instead of continuing with a partial edit-loci
frontier; also fall back on Ok(false) when provenance is live.

Co-authored-by: Cursor <cursoragent@cursor.com>
When provenance_live, .dag closure Err now forces entry witnesses to run
(matching touch-check and git-diff fail-closed siblings) instead of
falling back to the narrower seed bridge.

Co-authored-by: Cursor <cursoragent@cursor.com>
…nce overlay.

Disable runtime provenance overlay in host skip tests via GUNBC_FLOOR_PROVENANCE_OVERLAY=0, use seed-derived edit loci (not expanded .dag closure) for skip disposition until Step 3 equivalence, and drop redundant per-shard floor_provenance_ingest_is_live re-invocation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
OUTSIDE_FILE pointed at deleted src/v2/lens/unwired_model.dag (#6085); retarget to inert_carrier.dag:10 outside the floor_skip fixture import closure.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove dead entry_touches_frontier_via_dag_closure (referenced deleted
entry_claims_touch_frontier) and clone changed_paths into skip_ctx so
parallel shard path can still borrow it.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove duplicate node_frontier_plumbing_controls (kept #6061 FloorDiffEdits
variant), retarget OUTSIDE_FILE to inert_carrier.dag:10, and use
skip_ctx.changed_paths for single-threaded and shard skip paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls and others added 4 commits July 1, 2026 18:46
Resolve witness entry roots from overlay ingest with host-read fallback
that strips test-fn declarations program_assembly cannot parse yet;
scope provenance folding to changed paths only; and give pa_ingest_peer
an orphan TestClaim so skip disposition evaluates claims instead of
fail-closed run-all when saw_claim is false.

Co-authored-by: Cursor <cursoragent@cursor.com>
Addresses non-blocking APPROVE notes: use std any predicate instead of
hand-rolled fold_list contains, and single if-let on ingest-path witness.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

HARD GATE — affected-set pruning must produce a resolve+typecheck-COUNT receipt (operator standing rule, 2026-07-02)

A floor-repair scout measured this PR's overlay path by execution (temporary GUNBC_SCOUT_SCHEDULE_COUNT=1 counters on resolve_entry_graph + resolve_entry_with_parse_cache + cache-miss typecheck_module, reverted after). On the pa_ingest single-witness fixture (roster=1):

Arm entry_resolve typecheck_module witness_evals resolve_ms
PRESENT (live overlay, witness skipped) 6 28 0 3885
RUN-ALL (skip disabled) 1 27 1 2042

Present-arm pruning is strictly WORSE on the resolve/typecheck budget — it saves only the witness EVAL (−1), while resolve invocations go 1→6 and typecheck 27→28. This is the #6127 width-1 shard trap in miniature: wall/skip-count look like a win, total work multiplied.

Root: the node-frontier skip in run_discovery_rows fires AFTER the witness-entry closure is resolved (resolve at entry change → should_skip → continue skips eval only). Additionally resolve_floor_runner_context and floor_runner_eval_context each resolve the full affected_set_floor_runner.dag closure (2× duplicate).

Gate (blocks landing as a scheduling/pruning change):

  1. A resolve+typecheck-COUNT receipt showing PRESENT-arm strictly fewer than run-all. The current overlay FAILS this.
  2. The skip must move BEFORE witness-entry resolve (or a shared resolve memo makes the skip free), AND the duplicate floor_runner resolves must be shared/amortized.
  3. Independently still red: cargo fmt --all --check exit 1 on HEAD af155b04; source_root_ingest_gate_passes regression; inert committed host_source_root_ingest_manifest (Empty/false/0/"" + MANIFEST_INLINE_LIST_MAX>64); Step-3 real-corpus equivalence witnesses (a)(b)(c).

Pruning stays OFF until (1) and (2) are satisfied by an execution receipt. Per the operator standing rule, no scheduling change lands on wall-clock alone.

— sent from deep-hawk-756

@gunbai-bot

gunbai-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Closing as not-landable-in-current-form (CI-repair dispatch disposition)

Closing this PR to disposition its dangling state — it has been blocked (open cursor REQUEST_CHANGES, 0 approvals) with no active author (last real commit af155b04, Jul-1; the owning session is idle with no active work item). This is a deliberate close, not abandonment: the branch session/quick-carp-343 is preserved and its scaffolding is harvest material for the real fix.

Why it cannot land as-is — a floor-repair scout measured the overlay path by execution (see the hard-gate comment above, issuecomment-4869187145). Affected-set pruning here is work-neutral theater: on the pa_ingest single-witness fixture the PRESENT arm costs 6 entry-resolves / 28 typecheck / 3885ms vs run-all's 1 / 27 / 2042ms — it saves only the witness EVAL while increasing resolve+typecheck, because the node-frontier skip fires AFTER the witness-entry closure is resolved and resolve_floor_runner_context + floor_runner_eval_context each resolve the full affected_set_floor_runner.dag closure (2×). Per the operator standing rule, a scheduling change may not land without a resolve+typecheck-COUNT receipt showing PRESENT strictly fewer than run-all; the current overlay fails that gate. Independent blockers also remain: cargo fmt --all --check exit 1, source_root_ingest_gate_passes regression, inert committed host_source_root_ingest_manifest, and unproven Step-3 real-corpus equivalence.

The open cursor RC (review 34450) is subsumed by this close — it is a dashboard-only artifact and the PR is being retired regardless of its specifics.

Path forward: the real fix (move the skip BEFORE witness-entry resolve + share the duplicate floor_runner resolves) is tracked as a fenced follow-on in the CI-repair lane, gated behind resolver-B (#6155). It will be a fresh effort that can harvest this branch's overlay + affected_set_floor_runner.dag + fixtures. Reopen or branch from here when that lane opens.

— sent from deep-hawk-756

@gunbai-bot gunbai-bot Bot closed this Jul 2, 2026
briansrls pushed a commit that referenced this pull request Jul 2, 2026
…solver-B #6155) (#6170)

#6105 (runtime provenance ingest) was closed as not-landable: a floor-repair
scout measured it as work-neutral theater — pruning INCREASES resolve+typecheck
(PRESENT 6/28/3885ms vs run-all 1/27/2042ms) and only saves the witness EVAL,
because the node-frontier skip fires AFTER the witness-entry closure is resolved
and floor_runner resolves its closure twice. Previously this fence lived only in
a closed-PR comment + a dangling branch (fragile).

This records it in the affected-set plan as a discoverable dispatchable item:
- Why #6105 was closed (the measured counts).
- Acceptance (c) strengthened: scheduling changes need a before/after resolve+
  typecheck-COUNT receipt (PRESENT strictly fewer than run-all), per the operator
  standing rule — wall-clock/skip-count alone hid #6127's 30.9x regression.
- The two-part REAL fix: (1) move skip BEFORE witness-entry resolve; (2) share the
  2x duplicate floor_runner closure resolves (M1 walk_memo is the precedent).
- Fence: behind resolver-B #6155 (landing pruning on the current quadratic resolve
  would multiply the work #6155 is deleting). Branch session/quick-carp-343
  preserved as harvest.

Doc-only.

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 4, 2026
Refresh stale receipts in docs/plans/affected-set-precompute-pruning.md:
- Header: PR #6061 (2026-07-01) landed Step 4 consumer-1; update status
- Receipt table: add rows for Step 4 consumer-1 GREEN and consumer-2 IN PROGRESS
- Line 103: Fix stale claim — function_edited is LIVE (not ABSENT) with three axes
  (touches_frontier, function_edited, entry_file_touched; landed PR #6065/#6072)

Update ROADMAP.md and dag/gunbc/roadmap_authority.dag:
- PR #6105 closed 2026-07-02 as measured work-neutral
- Successor lane: resolver S2a + skip-before-resolve remaining fix

Fix unparseable fixture (src/v2/test/fixture/floor_skip/provenance_fail_closed_contract_test.dag):
- .dag grammar has NO comments (// and /* */ are unparseable)
- Convert comment block (lines 3-7) to data-string note
- Restructure: move data declaration after all imports

Refresh ci_floor_plan_witness_test.dag line 36:
- Update synthetic_optin_rows_note: one row enrolled since PR #6235
- Previous note said roster was empty under opt-in inversion; now reflects live state

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 5, 2026
)

* WIP: Stale-carrier sweep: affected-set plan docs + unparseable fixture

* Stale-carrier sweep: affected-set plan docs + unparseable fixture

Refresh stale receipts in docs/plans/affected-set-precompute-pruning.md:
- Header: PR #6061 (2026-07-01) landed Step 4 consumer-1; update status
- Receipt table: add rows for Step 4 consumer-1 GREEN and consumer-2 IN PROGRESS
- Line 103: Fix stale claim — function_edited is LIVE (not ABSENT) with three axes
  (touches_frontier, function_edited, entry_file_touched; landed PR #6065/#6072)

Update ROADMAP.md and dag/gunbc/roadmap_authority.dag:
- PR #6105 closed 2026-07-02 as measured work-neutral
- Successor lane: resolver S2a + skip-before-resolve remaining fix

Fix unparseable fixture (src/v2/test/fixture/floor_skip/provenance_fail_closed_contract_test.dag):
- .dag grammar has NO comments (// and /* */ are unparseable)
- Convert comment block (lines 3-7) to data-string note
- Restructure: move data declaration after all imports

Refresh ci_floor_plan_witness_test.dag line 36:
- Update synthetic_optin_rows_note: one row enrolled since PR #6235
- Previous note said roster was empty under opt-in inversion; now reflects live state

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* Fix contradictions in plan doc per review feedback (DESIGN §6)

Update affected-set-precompute-pruning.md for consistency:
- Line 54-58: Update description of skip decision to reflect all three axes now live (not a gap to fill)
- Line 15: Prep step now covers all axes (PR #6065/#6072 + #6234)
- Line 18: Consumer-1 receipt clarified — all three axes live, not contradictory 'both'

Resolves REQUEST_CHANGES from cursor/composer-2.5: plan doc must not carry contradictory facts about the same decision (§6 single authority). Step 4 consumer-1 is GREEN with all three axes modeled and wired.

* Complete contradiction sweep: update all two-axis language to three-axis (DESIGN §6)

Fix remaining §6 violations where plan doc carried both 'two axes' and 'three axes' descriptions:
- Line 80: Refresh intro prose — all three axes now covered as of Step 4
- Line 95: Acceptance witness (a) — all three axes, not just 'node-frontier + function-edited'
- Line 110: Consumer 2 gate — all three conditions required (including touched_entry_files)
- Line 150: Acceptance witness (a) spec — full predicate over all three axes
- Line 19: Receipt table — consumer 2 gate conditions now include all three

All sections now consistently describe the three-axis skip decision: touches_frontier OR function_edited OR entry_file_touched. Plan doc is single authority.

* Fix axis naming: third axis is entry_file_touched, not entry_touches_frontier_seeds (DESIGN §3)

Corrected predicate names and descriptions per cursor REQUEST_CHANGES:
- Line 106: Axis (iii) source is diff_edits.touched_entry_files (not frontier-seeds)
- Line 95: Acceptance bar predicate — entry_file_touched (not frontier-seeds proxy)
- Line 150: Witness (a) spec — entry_file_touched (not frontier-seeds on non-data-fns)
- Line 112: 'Conservative gate' paragraph — all three conditions (not just two)
- Line 15: Prep receipt — note that cited witness exercises two axes; full three-axes proof is Step 3 witness (a)

Fixes DESIGN §3 single-authority violation where plan doc used wrong name for third axis.

* Fix final contradiction: witness (c) acceptance bar requires all three conditions (DESIGN §6)

Line 154 acceptance witness (c) was still defining the scoped-diff condition with only two axes (empty frontier AND empty edited_test_fns), contradicting the three-axis gate in floor_precompute_would_skip (src/v2/workflow/affected_set_floor_runner.dag:177-194) and cli_run.rs:4926-4931 which includes touched_entry_files.

Updated witness (c) test condition to: empty node frontier AND empty edited_test_fns AND empty touched_entry_files.

Single authority now: plan doc matches floor-runner implementation.

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 5, 2026
…ng fallback) into design_document.dag + regen ROADMAP.md (#6264)

The composed floor's batch-2 GeneratedArtifactDriftGate has been RED on main:
generated_artifact_drift_gate_passes -> false (verified on pristine
origin/main a44b3b4), stopping the floor before dependent batches for
every lane.

Root cause, with a direction control on each artifact (drift direction is
NOT always authority->projection):

- DESIGN.md: #6236 landed the operator-signed section-5 absorbing-fallback
  trap by editing DESIGN.md DIRECTLY - the generated projection - without
  its authority dag/gunbc/design_document.dag. A blind main_wet regen would
  have DELETED the signed content. Fix direction: back-port the three
  drifted spots verbatim into the authority (trap paragraph, extended e.g.
  bullet, recurring-failure-modes entry, enforcement-intent thread clause).
  Oracle: after the back-port, main_wet reproduces committed DESIGN.md
  byte-identically (it does not appear in the regen diff).
- ROADMAP.md: the authority row gained "(#6105)" wording while the committed
  projection was stale. Fix direction: regen (one line).

Receipt: generated_artifact_drift_gate_passes -> true by execution after
this commit. The gate did its job; the ironic part - the document that says
model-before-implement was hand-edited around its own model - is exactly the
class the enforcement-intent lane exists to make unwritable.

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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