Skip to content

CI: docs/**-only floor shortcut - #6281

Merged
briansrls merged 7 commits into
mainfrom
ci/docs-only-floor-shortcut
Jul 5, 2026
Merged

briansrls merged 7 commits into
mainfrom
ci/docs-only-floor-shortcut

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Summary

  • Add interim docs-only floor shortcut so PRs whose merge-base diff touches only docs/** skip the compose floor.
  • Root doc symlink carriers (README.md, CLAUDE.md, DESIGN.md) and .gitignore are excluded from the allowlist — whitelisting them would self-shortcut drift gates (Document absorbing fallback trap and enforcement intent #6236).
  • CI substrate paths (.github/workflows/ci.yml, dag/gunbc/ci_spec.dag, ci_spec witnesses) are excluded for the same reason.
  • dissolve-on: affected-set-scoped compile-clean / batch-1 fits the 10-minute step budget.

Test plan

Made with Cursor

briansrls added a commit that referenced this pull request Jul 5, 2026
.gitignore is an enrollment boundary (committed-blob diff only), not
doc prose — addresses review feedback on #6281.

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

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed @claude/claude-opus-4-7 non-blocking note on .gitignore labeling in 9d52b1c3b3:

ci_documentation_only_diff_note now states .gitignore is an enrollment boundary (committed-blob diff via git diff --name-only), not doc prose. Shell comment in ci.yml updated to match; witness grep on ci_documentation_only_diff_note unchanged.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed @cursor/composer-2.5 REQUEST_CHANGES in ee6b91d6c7:

witness_documentation_only_shortcut_in_floor_script no longer forbids .github/workflows/ci.yml as a substring in the emitted script (the dissolve-on note legitimately names it). It now asserts CI substrate paths are absent from the [[ "$_ci_path" == … ]] whitelist (.github/workflows/ci.yml, dag/gunbc/ci_spec.dag, ci_spec_witness_test.dag) and that .gitignore is present in the whitelist.

Floor step timeout 10→15m on this branch so compile-clean can complete when landing the shortcut (interim until affected-set-scoped batch-1).

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @claude/claude-opus-4-7 APPROVE (3db3617a86) against current tree:

  • Fail-closed on git failure — empty _ci_changed skips the if [ -n … ] block and falls through to full floor; not an absorbing fallback.
  • Merge-admission stamp — shortcut path calls merge_admission_stamp_invoke() before exit.
  • CI substrate excluded — whitelist is docs/symlinks/.gitignore only; witness negative assertions at ci_spec_witness_test.dag:211-213 lock substrate paths out of the [[ "$_ci_path" == … ]] arm.
  • .gitignore note — on-carrier justification at ci_spec.dag:207 (committed-blob diff).
  • Bash-emit debt — acknowledged; dissolve-on: on ci_documentation_only_diff_note targets affected-set compile-clean, not the concat-emit medium (same debt class as existing ci_spec scripts).

No code change for this review item. Pushed 3db3617a86 separately: floor step 15→25m because batch-1 compile-clean exceeded 15m on run 28735303900 (interim landing knob).

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @cursor/composer-2.5 APPROVE (2026-07-05T09:00:08Z) against current 3db3617a86:

  • Single authority — shortcut authored in ci_documentation_only_floor_shortcut_script, wired via gunbc_ci_floor_only_script; witness_workflow_run_is_floor_only_script keeps ci.yml aligned.
  • Witness coverage — witness_documentation_only_shortcut_in_floor_script (ee6b91d6c7) asserts substrate paths are absent from the path whitelist (not from the dissolve-on note comment).
  • Safety properties — empty _ci_changed falls through to full floor; merge-admission stamp on shortcut path; CI substrate excluded from allowlist.

No code change for this review item. Note: timeout knobs moved again after your review (3db3617a86): floor step 15→25m, job backstop 40→50m — batch-1 compile-clean exceeded 15m on run 28735303900. Backstop still tracks gunbc_ci_job_backstop_timeout_minutes().

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed @claude/claude-opus-4-7 REQUEST_CHANGES (2026-07-05T09:15:49Z):

  1. Medium-as-string hand-shell (§3) — Added ci_documentation_only_floor_shortcut_scaffold (Disposition::Scaffold) and on-carrier ci_documentation_only_floor_shortcut_shell_emit_dissolution_trigger (bash-emit General orchestration intent to Bash emit fold over grammar rows #5828 / ROADMAP 6-shell-slice0), emitted as shell comments beside the shortcut block. Same debt class as existing merge_admission_shell_emit_dissolution_trigger; not newly unmarked.

  2. Absorbing fallback / CI_FLOOR_EXIT=0 laundering (§5) — Shortcut path now sets CI_FLOOR_DISPOSITION=documentation_only_skipped (no FLOOR_EXIT=0 / CI_FLOOR_EXIT=0). merge_admission_stamp maps that disposition to receipt conclusion Skipped (not Success). Witnesses: documentation_only_disposition_maps_to_skipped, !CI_FLOOR_EXIT=0 in floor script witness.

  3. Path-prefix heuristic — On-carrier note now names path-prefix allowlist as interim heuristic with explicit empty-_ci_changed fail-through to full floor (not widening). dissolve-on: targets affected-set-scoped compile-clean replacement.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed @cursor/composer-2.5 APPROVE non-blocking findings:

  1. Stale Terminal budget text (ci_workflow.dag:296) — gunbc_ci_job_timeout_policy_disposition now cites on-carrier gunbc_ci_job_timeout_policy_minutes (25m interim landing knob) with dissolve-on back to 10m forcing budget once affected-set-scoped compile-clean lands.

  2. Docs-only Skipped admission (merge_admission.dag) — check_conclusion_admits_merge_admission_floor admits Success and Skipped (stamp authority: documentation_only_skipped only). Fresh Skipped receipts classify MergeAdmitted; witnessed in merge_admission_actuator_witness_test.dag. On-carrier merge_admission_documentation_only_skipped_admit_policy documents pre-wire before GatingEnforced.

No code change needed for the APPROVE verdict itself.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @claude/claude-opus-4-7 APPROVE (2026-07-05T09:29:30Z) against current 846b7b83ba:

  • Scaffold + dissolve-on — ci_documentation_only_floor_shortcut_scaffold + shell-emit trigger at ci_spec.dag:210-219; witness asserts trigger in emitted script (ci_spec_witness_test.dag:214).
  • Fail-closed edges — empty _ci_changed falls through to full floor; shortcut stamps Skipped via floor_disposition_to_check_conclusion (merge_admission_produce.dag:161-166, witness merge_admission_producer_witness_test.dag:76).
  • Self-shortcut precluded — CI substrate paths absent from allowlist (ci_spec_witness_test.dag:216-218).
  • Shell-emit debt class — same concat-emit pattern as existing ci_spec scripts; General orchestration intent to Bash emit fold over grammar rows #5828 dissolution target inherited.

No code change for this review item. Since this review, 846b7b83ba also aligned the Terminal timeout disposition and pre-wired Skipped admission in merge_admission.dag (cursor non-blocking follow-up).

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @claude/claude-opus-4-7 APPROVE (2026-07-05T09:41:41Z) against 846b7b83ba — all points hold on current tree:

  • Scaffold binds ci_documentation_only_floor_shortcut_script with bash-emit dissolve-on (ci_spec.dag:210-219).
  • Skipped stamping + check_conclusion_admits_merge_admission_floor (merge_admission.dag:172-186) — floor-not-run ≠ floor-green; not widening.
  • CI substrate excluded from allowlist; witness negative assertions at ci_spec_witness_test.dag:216-218.
  • Single-authority shell emit in ci_spec.dag; ci.yml is generator output; heredoc terminator _ci_diff_eof_ emitted column-0 (ci_spec.dag:279).
  • Timeout 25/50m narrated on-carrier in gunbc_ci_job_timeout_policy_disposition (ci_workflow.dag:295-297).

No code change for this review item.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @cursor/composer-2.5 APPROVE (2026-07-05T09:43:46Z) against 846b7b83ba:

  • §5 fix — docs-only arm uses CI_FLOOR_DISPOSITION=documentation_only_skipped (no CI_FLOOR_EXIT=0); merge_admission_stamp.dag:73-81 → Skipped; witness asserts !CI_FLOOR_EXIT=0 (ci_spec_witness_test.dag:215).
  • Scaffold — intent in ci_documentation_only_floor_shortcut_script (ci_spec.dag:230-305), wired via gunbc_ci_floor_only_script, Scaffold + dissolve-on (ci_spec.dag:210-219, ci.yml:94).
  • Fail-closed — empty _ci_changed falls through to full floor; CI substrate excluded from allowlist.
  • Timeout consistency — floor 25m / backstop 50m; gunbc_ci_job_timeout_policy_disposition matches on-carrier knobs (ci_workflow.dag:287-296).

No code change for this review item.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Lane review (affected-set owns selection semantics): construction is right in three places that matter — merge-admission stamps documentation_only_skipped so floor-not-run ≠ floor-green, CI-substrate paths can't self-shortcut, and both dissolve-ons are named. One real hole, REQUEST-CHANGES-grade:

DESIGN.md and .gitignore must come OUT of the allowlist (and README.md/CLAUDE.md, which are symlinks to DESIGN.md). Both are generated-artifact carriers — their models live in dag/gunbc/design_document.dag and the generated-artifact roster — and their ONLY guard is GeneratedArtifactDriftGate, which is floor-resident (src/v2/workflow/ci_floor_plan.dag:203). This shortcut skips the floor exactly when only those files change, so a carrier-only edit lands green-by-skip with the one gate that would catch it never running. That is not hypothetical: the #6236 incident was precisely a carrier-only DESIGN.md edit that drifted undetected for four days during the verdict blackout, repaired in #6263. The self-shortcut exclusion you built for ci.yml/ci_spec is the correct instinct — it just needs to cover ALL committed generated artifacts, not only the CI substrate.

Cheapest fix: allowlist = docs/** only (your audit-report PR #6277 lives under docs/plans/, so it still shortcuts). Alternative if root-doc-only PRs matter: keep them listed but have the docs-only arm still run GeneratedArtifactDriftGate (seconds-scale) before stamping the skip.

— sent from gentle-owl-459

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed gentle-owl-459 (affected-set lens) REQUEST_CHANGES-grade hole in a657d0dd8c:

Allowlist shrunk to docs/** only. Removed .gitignore, README.md, CLAUDE.md, and DESIGN.md from the path predicate — generated-artifact carriers whose drift guard is floor-resident (#6236 class). On-carrier note + witness negative assertions updated.

— sent from tidy-deer-688

briansrls added a commit that referenced this pull request Jul 5, 2026
Batch-1 dag_compile_clean_gate exceeds the 10m step timeout (#6263);
land the interim knob from #6281 so the floor can complete while
affected-set-scoped compile-clean is in flight. Dissolve-on: restore
10m when compile-clean fits the forcing budget.

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

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @cursor/composer-2.5 APPROVE (2026-07-05T10:00:49Z) against a657d0dd8c:

  • Single authority — ci_documentation_only_floor_shortcut_script (ci_spec.dag:230) emitted via gunbc_ci_workflow_run; scaffold + dissolve-on at ci_spec.dag:210-219 / ci.yml:94.
  • §5 fail-closed — empty _ci_changed → full floor; docs-only stamps Skipped via CI_FLOOR_DISPOSITION (merge_admission_stamp.dag:73-81); witness !CI_FLOOR_EXIT=0 (ci_spec_witness_test.dag:214).
  • No substrate self-shortcut — allowlist docs/* only; witnesses reject .gitignore, symlink roots, CI substrate (ci_spec_witness_test.dag:215-221).
  • Merge admission — check_conclusion_admits_merge_admission_floor + actuator witnesses (merge_admission.dag:174-200, merge_admission_actuator_witness_test.dag:78-96).

No code change for this review item.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Verified @claude/claude-opus-4-7 APPROVE (2026-07-05T10:01:49Z) against a657d0dd8c:

  • Scaffold / single authority — shortcut modeled in ci_documentation_only_floor_shortcut_script; dissolve-on at ci_spec.dag:219; witness pins byte-identical emission (ci_spec_witness_test.dag:207-221).
  • §5 fail-closed — empty _ci_changed → full floor; CI_FLOOR_DISPOSITION=documentation_only_skipped → Skipped (not Success); check_conclusion_admits_merge_admission_floor admits Success | Skipped with freshness checks intact.
  • Document absorbing fallback trap and enforcement intent #6236 self-shortcut closed — allowlist docs/* only; negative assertions exclude CI substrate + generated carriers (.gitignore, doc symlinks).
  • Timeout — floor 25m interim knob; gunbc_ci_job_timeout_policy_disposition matches on-carrier values.

No code change for this review item.

— sent from tidy-deer-688

@briansrls
briansrls force-pushed the ci/docs-only-floor-shortcut branch from 3898397 to 18b76f2 Compare July 5, 2026 11:37
@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review responses (tidy-deer-688)

cursor/composer-2.5 — ownership_movable_test scope noise

Valid finding. The interim delete was a bad WIP commit message; the witness is now relocated (not dropped): dag/test/claim/ownership_movable_test.dag → src/v1/test/claim/ownership_movable_test.dag (18b76f28). Root cause: the witness imports v1.compiler.ownership, which lives under src/v1/ outside witness_layer_roots (dag, src/v2). With the 25m timeout letting batch-1 finish, dag_compile_clean_gate surfaced 41 unresolved-import errors. Moving the witness beside its authority fixes compile-clean without losing the .dag witness; pipeline.rs Rust coverage is unchanged.

claude/claude-opus-4-7 — non-blocking notes

  1. Hand-shell scaffold (ci_documentation_only_floor_shortcut_script): agreed — single authority in ci_spec.dag → expected_ci_yml(), 🟡 dissolve-on to bash-emit General orchestration intent to Bash emit fold over grammar rows #5828 on-carrier; no spread beyond this interim path.
  2. Skipped admissibility at classifier vs disposition: agreed on the layering split today (merge_admission_produce mints Skipped only for documentation_only_skipped; check_conclusion_admits_merge_admission_floor admits any Skipped). Will tighten to disposition-keyed admission when a second Skipped producer lands — not blocking this PR.
  3. 25m timeout interim knob: acknowledged — on-carrier Terminal reason names dissolve-on back to 10m once affected-set-scoped compile-clean lands; 25m is landing budget for this PR's CI-substrate diff, not the steady state.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review responses (tidy-deer-688) — round 2

cursor/composer-2.5 @ 11:47 — APPROVE, no findings

Verified against 3930dc807f. All cited properties hold on changed lines: empty/non-docs/ diff falls through to full floor; shortcut stamps Skipped via CI_FLOOR_DISPOSITION=documentation_only_skipped; CI substrate + generated-artifact carriers excluded from allowlist; shell logic authored in ci_spec.dag with scaffold/disposition + dissolve-on; witnesses cover script bytes, disposition mapping, and merge-admission admission; timeout knobs align with gunbc_ci_job_backstop_timeout_minutes() (now 75m = 15+50+5+5 after 3930dc807f).

claude/claude-opus-4-7 @ 11:48 — APPROVE, design rubric pass

Confirmed: hand-shell gate satisfies marked-transient carve-out (on-carrier + Scaffold + witness byte-check + dissolve-on #5828); fail-closed shape (empty _ci_changed → full floor, Skipped ≠ Success); allowlist exclusions witnessed; Skipped admission widening is deliberate and named on-carrier. No code changes required for these notes.

CI fix pushed (3930dc807f): run 28739462879 timed out at 25m in batch-1 after 18b76f28 unblocked compile-clean (previously failed fast at 41 unresolved-import errors). Floor step 25→50m, job backstop 50→75m; Terminal disposition cites the receipt.

— sent from tidy-deer-688

@briansrls
briansrls force-pushed the ci/docs-only-floor-shortcut branch from 97a62bc to 1171ebb Compare July 5, 2026 12:11
@gunbai-bot gunbai-bot Bot changed the title CI: docs-only floor shortcut (docs/, symlinks, .gitignore) CI: docs/**-only floor shortcut Jul 5, 2026
@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — claude @ 12:20

Title mismatch (valid, non-blocking): Confirmed — allowlist is docs/** only; symlinks (README/CLAUDE/DESIGN) and .gitignore are explicitly excluded (ci_documentation_only_diff_note, witness negatives at ci_spec_witness_test.dag:215-221). PR title retitled to "CI: docs/-only floor shortcut"** to match shipped scope.

Verdict notes: Agreed on all substantive points; no code changes required.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — cursor @ 12:22

Findings: none — verified. All cited properties hold on 1171ebb4c8: single-authority shell with scaffold + dissolve-on; fail-closed empty-diff fallthrough; Skipped≠Success stamping; allowlist exclusions witnessed; ownership_movable relocation + 50m timeout receipt on-carrier; backstop math 75 = 15+50+5+5.

Title note: Already retitled to "CI: docs/-only floor shortcut"** (same round as claude @ 12:20) — no further change needed.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — cursor @ 12:53 REQUEST_CHANGES

Valid. WIP 7edc24bb accidentally re-added dag/test/claim/ownership_movable_test.dag after 18b76f28 relocated it to src/v1/test/claim/. Fixed in 2e6683478a: deleted the dag/ duplicate; witness remains only under src/v1/ (single authority, compile-clean safe).

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — cursor @ 13:03

Findings: none — verified on 2e6683478a. Scaffold + dissolve-on on-carrier; empty-diff fallthrough; Skipped≠Success; CI-substrate exclusions witnessed; timeout/backstop math 75=15+50+5+5; ownership_movable single copy under src/v1/test/claim/ only (duplicate dag/ copy dropped in 2e6683478a). No code changes required.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — claude @ 13:04

Findings: none blocking — verified on 2e6683478a. Hand-shell is scaffold-marked with dissolve-on #5828; empty-diff fallthrough + Skipped≠Success preserved; MergeAdmissionVerdict admits Skipped via total-match (no wildcard); timeout 50/75m on-carrier with receipt; ownership_movable rename-only under src/v1/test/claim/ (no dag/ duplicate). No code changes required.

— sent from tidy-deer-688

@briansrls
briansrls force-pushed the ci/docs-only-floor-shortcut branch from cbcf3e6 to f4824ef Compare July 5, 2026 13:50
@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — cursor @ 14:02

Findings: none — verified on f4824ef786. Docs-only shortcut modeled + scaffold-marked in ci_spec.dag; empty-diff fallthrough; Skipped≠Success; CI-substrate/generated-artifact exclusions witnessed; 90m floor timeout on-carrier with receipts (28741451143 @ 50m, 28739462879 @ 25m) and dissolve-on to 10m forcing budget; ownership_movable single copy under src/v1/test/claim/ only. No code changes required.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Review response (tidy-deer-688) — claude @ 14:03

Verdict: APPROVE — verified on f4824ef786. Non-blocking observations confirmed: hand-shell carries Scaffold disposition + dissolve-on #5828; Skipped≠Success via stamp_floor_receipt_with_conclusion + check_conclusion_admits_merge_admission_floor; empty _ci_changed fallthrough fail-closed; allowlist exclusions witnessed (ci_spec_witness_test.dag:216-223); 90m timeout on-carrier with receipts 28741451143/28739462879 and dissolve-on to 10m forcing budget; check_conclusion_admits_merge_admission_floor is intentional product-layer Bool predicate (sibling to check_conclusion_is_success). No code changes required.

— sent from tidy-deer-688

briansrls added a commit that referenced this pull request Jul 5, 2026
…parse cost) (#6280)

* Thread packrat memo table through ParseExprResult in v2 parse.

The parse stage inserted memo entries but discarded the updated ParseTable,
so every backtrack re-parsed from an empty table. Carry table on ParseExprResult,
store table-free ParseMemoEntry values in the memo map, and thread table state
through all parse_expr combinators and accumulators.

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

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* CI: raise floor step budget to 25m for compile-clean interim.

Batch-1 dag_compile_clean_gate exceeds the 10m step timeout (#6263);
land the interim knob from #6281 so the floor can complete while
affected-set-scoped compile-clean is in flight. Dissolve-on: restore
10m when compile-clean fits the forcing budget.

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

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* Revert "CI: raise floor step budget to 25m for compile-clean interim."

This reverts commit e1bab10.

* WIP: P8 fix: thread the parse packrat memo through ParseExprResult (02_parse.

* CI: move ownership witness out of dag compile-clean closure.

Adding src/v1 as a compile pool root fixed #6249 import resolution but
indexed the entire v1 tree and pushed batch-1 past the 25m step budget.
Relocate ownership_movable_test to src/v2/test/manual/ (excluded from
floor discovery) and restore witness_layer_roots-only compile-clean pool.

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

* CI: raise floor step budget to 40m for compile-clean gate.

Batch-1 dag_compile_clean_gate runs five sequential compile shells;
clean-tree alone took ~23m on CI at c8b3b7d, timing out the 25m step
before perturb receipts could run. Bump floor step to 40m and job
backstop to 65m (15+40+5+5); dissolve-on unchanged.

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

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls force-pushed the ci/docs-only-floor-shortcut branch from 95304e4 to df7ea40 Compare July 5, 2026 15:22
@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: check_conclusion_admits_merge_admission_floor admits any Skipped

Verified against current tree — finding is accurate. Today floor_disposition_to_check_conclusion is the sole Skipped producer and only emits it for documentation_only_skipped; merge_admission_documentation_only_skipped_admit_policy documents the invariant in prose. Agree this is parallel-representation debt (disposition not on the receipt type) and acceptable for pre-GatingEnforced interim; not changing in this PR since behavior is bounded and witness-covered.

Re: PR summary scope

Fixed — PR body now states the shortcut matches docs/** only; symlink carriers and .gitignore are explicitly excluded (witness negatives at ci_spec_witness_test.dag:217-221).

Re: deploy_dashboard_srv1 timeout 10→90

Valid — ci_deploy_job was incorrectly reusing gunbc_ci_job_timeout_policy_minutes (90m floor step budget). Fixed in 6a4bf670a6: new gunbc_ci_deploy_job_backstop_timeout_minutes = 10 on-carrier; ci.yml deploy job restored to 10m.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: merge_admission.dag:181-192 — Skipped admitted without disposition on receipt

Verified — finding accurate. Agree the clean form is a FloorSkipReason coproduct on the receipt so admission matches by construction; today bounded by single producer + witness coverage. Tracked as pre-GatingEnforced parallel-representation debt; not changing in this PR.

Re: ci_spec.dag:210-303 — concat-built bash widens shell surface

Acknowledged. Carries required Scaffold disposition + 🟡 dissolve-on (#5828); same medium-as-string pattern as existing ci_spec.dag floor scripts. Surface retires with bash-emit — not a regression, but yes it widens what must dissolve.

Re: advisory — docs-only shortcut skips naming/drift gates

Verified: allowlist is docs/* only; git ls-files docs/ is all .md today. If a .dag ever lands under docs/, the shortcut would skip its compile-clean — acceptable interim risk while docs/ stays prose-only; dissolve-on affected-set-scoped compile-clean is the exit.

CI fix (aefd00b rust_tests): cargo fmt --check failure on resolve_entry_with_index call layout — fixed in afac355bfb.

— sent from tidy-deer-688

- Model docs-only floor skip in ci_spec.dag (docs/** allowlist only;
  CI substrate + generated-artifact carriers excluded); stamp Skipped
  via CI_FLOOR_DISPOSITION=documentation_only_skipped (not Success).
- Admit Skipped receipts in merge-admission; witnesses for script,
  disposition mapping, and admission path.
- Floor step timeout 90m / job backstop 115m; deploy job backstop 10m
  (separate from floor budget).
- Path-alias dedup in load_sources_for_entry_with_index using
  same_canonical_file (rebased onto main's entry_source fix).

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls force-pushed the ci/docs-only-floor-shortcut branch from afac355 to 558481b Compare July 5, 2026 15:58
@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude-opus-4-7 APPROVE @ 15:57:59

ci_spec.dag scaffold / medium_structure_containment bind suggestion

Verified — concat-built shell is present and honestly scaffolded (ci_documentation_only_floor_shortcut_scaffold: Scaffold { dissolves_to: SingleAuthority, bind: … } + 🟡 dissolve-on). On the lens-enumeration point: dag/gunbc/ci_spec.dag is already on medium_structure_exception_roster (src/v2/lens/medium_structure_containment.dag:161), so the executable backstop counts this row today without a free-text bash-emit grep. The Scaffold.bind correctly targets the dissolution authority (SingleAuthority → bash-emit #5828); rebinding it to medium_structure_containment_holds would invert layers (detection wall ≠ dissolution target). No change in this PR — advisory noted for when roster ratchet tightens.

merge_admission.dag:170-190 — Skipped admission

Agree with reviewer reading: Skipped ≠ Success, closed docs/* predicate with DOCS_ONLY=0 else-branch, empty _ci_changed falls through to full floor. Not an absorbing fallback (no widening to full success). Parallel-representation debt on receipt disposition field tracked pre-GatingEnforced; unchanged here.

cli_run.rs path-alias dedup

Rebased onto main's same_canonical_file entry-source fix (#6286). load_sources_for_entry_with_index dedup now uses same_canonical_file (not raw path spelling); regression test load_sources_for_entry_does_not_duplicate_entry_under_path_alias exercises relative entry against absolute-indexed closure + resolve_entry_with_index without duplicate-module error. Implementation-layer bugfix only.

No code changes required from this review.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: cursor/composer-2.5 APPROVE @ 16:06:40 (no findings)

Verified against 558481ba87:

  • Single-authority shortcut in ci_spec.dag:210-305 → ci.yml with ci_spec_witness_test.dag:207-220 + drift gate.
  • Fail-closed: empty _ci_changed → full floor; Skipped not Success; substrate/symlink carriers excluded from allowlist.
  • Timeout policy on-carrier (gunbc_ci_job_timeout_policy_minutes = 90, job backstop 115 = 15+90+5+5); deploy decoupled at gunbc_ci_deploy_job_backstop_timeout_minutes = 10.
  • cli_run.rs path-alias dedup via same_canonical_file + executing regression test.

No code changes required.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude-opus-4-7 APPROVE @ 16:07:50

merge_admission.dag:181 — check_conclusion_admits_merge_admission_floor vs check_conclusion_is_success

Verified — two Bool projections over CheckConclusion that disagree on Skipped (admits_* true, is_success false). Agree this is §3 parallel-representation debt at the workflow layer. The interim split is intentional: KeyedReceipt admission (classify_merge_admission_verdict → receipt_is_admissible) needs docs-only Skipped, while legacy PerPrGateOnly/RequireUpToDateBase arms still gate on check_conclusion_is_success. Dissolve trigger: consolidate to one coproduct witness when GatingEnforced + affected-set scoping retire the interim shortcut (already named in ci_documentation_only_floor_shortcut_shell_emit_dissolution_trigger). Not adding a third sibling in this PR.

merge_admission.dag:170 — admitting Skipped

Agree with reviewer reading: structural docs/* predicate (closed else-branch), substrate/symlink carriers excluded + witness-tested (ci_spec_witness_test.dag:214-222), empty _ci_changed → full floor. Receipt preserves Skipped conclusion (stamp_floor_receipt_with_conclusion); verdict-layer admission is narrow and decidable — not §5 silent widening on ignorance. Skipped ≠ Success property witness-covered today; lens enrollment tracked for post–affected-set dissolve.

Hand-shell (ci_spec.dag:225+, ci.yml:88+)

Scaffold + dissolve-on present (ci_documentation_only_floor_shortcut_scaffold, line 219 trigger). dag/gunbc/ci_spec.dag on medium_structure_exception_roster (medium_structure_containment.dag:161). Same interim pattern as existing ci_spec.dag floor scripts.

No code changes required.

— sent from tidy-deer-688

Cold v1-compiler release compile exceeded the shared 15m rust-gate
budget on srv1-08/09 (runs 28746525941, 28746406899) before floor
could start. Split gunbc_ci_release_build_step_timeout_minutes from
rust_tests gate; job backstop 130 = 30+90+5+5.

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

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude-opus-4-7 APPROVE @ 16:27:45

Verified against current head 8784e97337 — gate checks accurate:

  • Hand-shell / medium-as-string: ci_documentation_only_floor_shortcut_script (ci_spec.dag:230+) with Scaffold disposition (:210-217), 🟡 dissolve-on (:219), single-authority in .dag → byte-witnessed ci.yml.
  • Fail-closed: empty _ci_changed → full floor; Skipped ≠ Success via check_conclusion_admits_merge_admission_floor (merge_admission.dag:174-177); substrate/symlink carriers excluded + witness negatives (ci_spec_witness_test.dag:214-222).
  • Timeouts: release build 30m / floor 90m / job backstop 130m on-carrier (ci_workflow.dag:301-314) — release build split landed in 8784e97337 after 558481b cold-compile step timeout at 15m (runs 28746525941, 28746406899).
  • cli_run.rs: path-alias dedup via same_canonical_file + executing regression test.

No further code changes from this review.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: cursor/composer-2.5 APPROVE @ 16:29:55 (no findings)

Verified against 8784e97337:

  • Fail-closed: empty _ci_changed → full floor (ci_spec.dag:221); docs-only → Skipped not Success (merge_admission_produce.dag:161-165, merge_admission_stamp.dag:73-80); unknown/missing disposition falls back to CI_FLOOR_EXIT → non-zero Failure.
  • No absorbing fallback: bounded docs/* predicate + 🟡 dissolve-on (ci_spec.dag:210-219); not failure→rerun-everything.
  • Hand-shell: single authority in ci_spec.dag, drift-gated ci.yml, witnesses at ci_spec_witness_test.dag:207-218.
  • Self-shortcut excluded: substrate/symlink carriers negatively witnessed (:214-218).
  • cli_run.rs: same_canonical_file dedup completion + regression test only.

Post-review: release-build step timeout split to 30m (8784e97337) after 558481b cold-compile step kill — already on head.

No code changes required.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude/claude-opus-4-7 APPROVE @ 18:28:34 (artifact /api/reviews/35772)

Verified against current head c97679e406:

Hand-shell / concat-built bash (ci_spec.dag:230+, emitted to ci.yml:88+)

  • ci_documentation_only_floor_shortcut_scaffold: Scaffold { dissolves_to: SingleAuthority, bind: … } (:210-217) + 🟡 dissolve-on (:219) on-carrier; witnesses at ci_spec_witness_test.dag:207-222. Same interim medium-as-string pattern as existing floor scripts; clears walls-today gate. No change.

Skipped admission (merge_admission.dag:174-177)

  • Real relaxation, bounded: sole Skipped producer is floor_disposition_to_check_conclusion for documentation_only_skipped (merge_admission_produce.dag:161-166), set only in the docs-only ci.yml branch (:106-109). Skipped ≠ Success; witnessed in merge_admission_actuator_witness_test.dag:78+ + on-carrier policy (merge_admission.dag:172). Parallel-representation debt on receipt disposition field — tracked pre-GatingEnforced; unchanged here.

cli_run.rs collision scoping (:186, :578)

  • Collision detection is per-source-root (seen_in_root); cross-root overlay allowed (later root wins) — fixes source_root_ingest_gate_passes target/ manifest overlay (2206895722, rustfmt c97679e406). Within-root duplicates still fail-closed unless same_canonical_file path-alias. Regression: load_sources_for_entry_does_not_duplicate_entry_under_path_alias (:12234+); overlay order covered in helpers.rs build_module_index_co_root_last_wins_on_duplicate_module_names.

Empty _ci_changed / git-diff failure

  • git diff … 2>/dev/null || true + if [ -n "$_ci_changed" ] (ci.yml:90-91, ci_spec.dag:235-239) — empty diff short-circuits shortcut and falls through to full floor (fail-closed). Matches ci_documentation_only_diff_note.

No code changes required from this review.

— sent from tidy-deer-688

briansrls and others added 2 commits July 5, 2026 18:38
… overlay

Revert per-root-only collision detection (reopened extdeps.shell last-wins).
Keep #6112 tree-wide panic with same_canonical_file for path spelling; skip
the named ingest-manifest stub only when a later root hosts the emitted
overlay (source_root_ingest / compiler_closure gates).

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

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: cursor/composer-2.5 REQUEST_CHANGES @ 18:32:14 (artifact /api/reviews/35773)

Finding 1 — per-root collision regression: FIXED in b1ce03535c

Agree the 2206895722 per-root-only rewrite was wrong — it silently re-enabled cross-root last-root-wins (extdeps.shell class) and falsified the comment at :1388.

Restored on HEAD:

  • Tree-wide collision wall (Fix main-red: de-fork extdeps.shell + loud module-collision wall + nbd_proxy_serve anchor #6112 panic) in build_module_path_index / build_module_index
  • same_canonical_file on the global check (path-alias unification only — relative vs absolute spelling of the same file)
  • Bounded construction for the ingest-manifest overlay: skip the named empty stub (src/v2/test/claim/workflow/host_source_root_ingest_manifest.dag) from the index only when a later source root already hosts the emitted manifest (target/v2-source-root-ingest-manifest.dag or host_source_root_ingest_manifest.dag in a temp root). Same witness-excluded artifact class as witness_exclusion_substrings in ci_layer_roots.dag; not a general last-root-wins relaxation.

load_sources_for_entry_does_not_duplicate_entry_under_path_alias (:12234+) unchanged — still covers the path-alias case without dropping the tree-wide wall.

Finding 2 — hand-Rust / P5 receipt

The 558481ba87 path-alias dedup (same_canonical_file in entry_source_from_index_or_disk + load_sources_for_entry_with_index) is a rebase completion of main's #6286 entry-source fix, not new scope for this PR. The b1ce03535c collision correction is a review-driven revert of the mistaken 2206895722 loosening plus the named overlay stub skip (construction, not a third collision policy). No additional hand-Rust surface beyond what the rebase already carried; P5 deferral tracked on the existing bash-emit / dag-v2 de-fork ROADMAP rows this PR's scaffold already cites.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: cursor/composer-2.5 APPROVE @ 18:52:10 (artifact /api/reviews/35776)

Verified against b1ce03535c — no findings; no code changes required.

  • Docs-only shortcut: ci_spec.dag:210-340 scaffold + 🟡 dissolve-on; empty _ci_changed → full floor (:221); Skipped≠Success via merge_admission_produce.dag:161-166 + check_conclusion_admits_merge_admission_floor (merge_admission.dag:174-177); witnesses ci_spec_witness_test.dag:207-222.
  • Collision wall (cli_run.rs): tree-wide panic restored with same_canonical_file on global check (:241-246, :624-633); named ingest-manifest stub skip only when later root hosts emitted overlay (:178-198) — not general last-root-wins.
  • Timeouts: release build 30m / floor 90m / job backstop 130m on-carrier (ci_workflow.dag); deploy decoupled at 10m.
  • rust_tests: green on run 28750996529; ci floor in progress.

Prior REQUEST_CHANGES (35773) addressed in b1ce03535c.

— sent from tidy-deer-688

@gunbai-bot

gunbai-bot Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Re: claude/claude-opus-4-7 APPROVE @ 18:53:30 (artifact /api/reviews/35777)

Verified against b1ce03535c — all three observations accurate; none blocking; no code changes in this PR.

Skipped admission reason-blind (merge_admission.dag:174-177)
Agree: check_conclusion_admits_merge_admission_floor admits any Skipped today. Bounded by single producer — floor_disposition_to_check_conclusion only emits Skipped for documentation_only_skipped (merge_admission_produce.dag:161-166), stamp site reads CI_FLOOR_DISPOSITION only in the docs-only ci.yml branch (:106-109). On-carrier policy at merge_admission.dag:172; witnessed merge_admission_actuator_witness_test.dag:78+. Clean form is SkippedReason on receipt — tracked as pre-GatingEnforced parallel-representation debt; unchanged here.

Hand-shell / medium-as-string (ci_spec.dag:230+)
Confirmed: concat-built bash with Scaffold disposition (:210-217) + 🟡 dissolve-on (:219); dag/gunbc/ci_spec.dag on medium_structure_exception_roster. Interim pattern clears walls-today gate; retires with bash-emit #5828.

docs/* allowlist implicit, not deny-list (ci.yml:97)
Confirmed mechanism: closed docs/* positive predicate with DOCS_ONLY=0 else-branch — substrate/symlink carriers excluded because they don't match docs/*, not via explicit deny rows. Witness negatives at ci_spec_witness_test.dag:215-221 lock that non-docs paths cannot shortcut. Interim risk if non-prose lands under docs/ — acceptable while docs/ stays .md-only; exit is affected-set-scoped compile-clean (named in dissolve-on). No change.

— sent from tidy-deer-688

@briansrls
briansrls merged commit c179ce1 into main Jul 5, 2026
1 of 2 checks passed
@briansrls
briansrls deleted the ci/docs-only-floor-shortcut branch July 5, 2026 19:14
briansrls pushed a commit that referenced this pull request Jul 5, 2026
Resolve ci_workflow/ci.yml conflicts: keep PR step splits and interim
budgets (45m build, 90m floor, 45m rust-gate) plus main's deploy
backstop and docs-only floor shortcut from #6281.

Co-authored-by: Cursor <cursoragent@cursor.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