Current authoritative state
The stacked-PR/exact-checkout CI evidence defects and bounded browser-evidence timeout defect are repaired on canonical single-writer Ready PR #299 / branch fix/stacked-pr-ci-gates-298. Protected shipped truth remains exact main@3b38ead2d00f44eb578d0689087b9293b3dabe1e; current exact #299 head is 1efbd632719b0e54c5a33e3a95224a4bd2f869d3, mechanically mergeable against that unchanged protected base. The effective Inkspan delta remains only .github/workflows/ci.yml plus src/workflowExactHead.test.ts; do not create a competing CI writer.
Repaired Inkspan-owned evidence defects
- Canonical CI restricted
pull_request to base main, leaving stacked PR heads without the ordinary repository matrix.
- Contributor-head checkout lacked an immediate runtime equality proof before setup/repository-code consumption.
- Browser evidence had the same 30-minute ceiling as ordinary jobs even though dependency-locked
playwright install --with-deps can consume that budget during infrastructure/package-mirror latency.
- The predecessor contract test relied on global string counts, so job-local timeout or exact-checkout verification order could move and false-green.
Historical TDD lineage: stacked-trigger RED e75a0035d753d8d58a9c04a8c254bf8914135e24 -> trigger repair 3ea55387d8d7d88a80933b398abda78e42a4496b; runtime-checkout RED 85572a50d79a11c27c9171cc9180d7a53128bea0 -> exact checkout attestation; browser-timeout RED a74e150c06c22e3caee48446d03c3b0726bfc0f5 -> browser-only 60-minute ceiling while build/Office stay at 30.
After #299 moved Ready, CodeRabbit identified the fourth, still-valid false-green weakness on predecessor b7e9bb8156a3e46204523ab37292566811f560f8. Current 1efbd632719b0e54c5a33e3a95224a4bd2f869d3 slices the three repository workflow jobs independently, binds each timeout and checkout contract to its own job, requires exact-head verification immediately after checkout and before pnpm/setup-python consumers, and checks the pull_request YAML trigger structurally without a base-branch filter. CodeRabbit marks that Major thread addressed/resolved.
A later Devin informational observation correctly notes that the repository runtime check compares local HEAD with the same immutable event SHA supplied to checkout. That proves checkout honored the event-bound ref; independent live PR/base resolution remains the separate governance/review step before lifecycle mutation and is not silently claimed by the job assertion.
Exact-current-head evidence
For unchanged exact #299 head 1efbd632719b0e54c5a33e3a95224a4bd2f869d3:
- repository CI
32635939468: completed / success;
- build-and-test
97185600342: success, including exact source-head checkout verification, typecheck, exact 100% owned-production coverage, library build, packed-package verification, and demo build;
- browser
97185600177: success, including exact source-head checkout verification, Playwright dependency/revision installation, and real cross-engine evidence inside the bounded 60-minute ceiling;
- Office Python 3.11
97185600282, 3.12 97185600292, 3.13 97185600341, 3.14 97185600286: success with exact source-head checkout verification, dependency consistency, 100% docstring/branch coverage, wheel, and packaged schema/license gates;
- central Security Scan
32635939483: GitHub aggregate status is success, but this is non-passing / false-green supply-chain evidence. Dependency-review job 97185600223 checked out synthetic merge 12668622e38473c14dbb7d22bb9e3e0c05f1ea8a; its exact 3b38ead2d00f44eb578d0689087b9293b3dabe1e...1efbd632719b0e54c5a33e3a95224a4bd2f869d3 support probe returned HTTP 403, emitted Dependency review is unavailable for ContextualWisdomLab/inkspan; skipping dependency-review hard gate., wrote supported=false, skipped the pinned dependency-review action, and still concluded green. Foreign owner: ContextualWisdomLab/.github#810, active repair PR #897;
- central SAST Semgrep
32635939469: GitHub aggregate status is success and the scan reported no findings, but exact-source evidence is non-passing because job 97185600190 checked out synthetic merge 12668622e38473c14dbb7d22bb9e3e0c05f1ea8a rather than source head 1efbd632719b0e54c5a33e3a95224a4bd2f869d3. Foreign exact-submitted-revision owner: ContextualWisdomLab/.github#1222, active repair PR #941;
- formal submitted reviews: automated
COMMENTED reviews and maintainer thread replies only, qualifying approvals 0;
- unresolved inline review threads: 0; the three Devin informational observations were verified against this exact head, answered with their intended scope, and resolved without treating them as approval;
- PR lifecycle: Ready / unmerged; GitHub reports mechanically mergeable.
The repository-local #299 CI repair is technically green, but the complete required evidence set is not. A green aggregate central status cannot substitute for a skipped hard gate or a wrong checkout SHA. OSV/Trivy/Scorecard success is not a semantic substitute for the skipped dependency-review action. Pending, queued, skipped, cancelled, absent, neutral, failed, stale, predecessor, status-only, model-only, wrong-checkout, or synthetic-merge evidence is non-passing.
Foreign owner acceptance and downstream boundary
There is no correct Inkspan-local source workaround for the central dependency-review capability path or the central synthetic-merge checkout. The existing foreign owners have been advanced with the exact affected Inkspan SHAs/runs/jobs; do not add a leaf workaround or create duplicate central writers.
Before #299 can be treated as merge-ready under the evidence contract, the corresponding central repairs must reach protected .github/main, then unchanged or descendant #299 must acquire fresh central evidence that proves:
- dependency-review support comparison returns a transport-successful HTTP 200, the pinned dependency-review action actually executes and succeeds, and no
supported=false/skip path is taken;
- central Security/SAST jobs bind and attest the exact Inkspan source head/repository identity before repository-code consumption/scanning rather than relying on
refs/pull/*/merge checkout evidence.
After #299 eventually integrates, every stacked PR must independently acquire its own exact-current-head repository workflow generation; parent/predecessor evidence cannot substitute. The 60-minute browser bound is a finite infrastructure allowance, not permission to make browser evidence optional or unbounded.
The repair is active-PR truth only. Keep #299 Ready but unmerged while these central exact-evidence blockers and every then-live governance requirement remain unresolved. Before merge, refetch unchanged exact head/live protected base, ancestry/mergeability, live governance, formal reviews/threads, and every applicable repository/central workflow. Do not self-approve, transfer predecessor evidence, weaken gates, move protected main, or fabricate release identity.
Current authoritative state
The stacked-PR/exact-checkout CI evidence defects and bounded browser-evidence timeout defect are repaired on canonical single-writer Ready PR #299 / branch
fix/stacked-pr-ci-gates-298. Protected shipped truth remains exactmain@3b38ead2d00f44eb578d0689087b9293b3dabe1e; current exact #299 head is1efbd632719b0e54c5a33e3a95224a4bd2f869d3, mechanically mergeable against that unchanged protected base. The effective Inkspan delta remains only.github/workflows/ci.ymlplussrc/workflowExactHead.test.ts; do not create a competing CI writer.Repaired Inkspan-owned evidence defects
pull_requestto basemain, leaving stacked PR heads without the ordinary repository matrix.playwright install --with-depscan consume that budget during infrastructure/package-mirror latency.Historical TDD lineage: stacked-trigger RED
e75a0035d753d8d58a9c04a8c254bf8914135e24-> trigger repair3ea55387d8d7d88a80933b398abda78e42a4496b; runtime-checkout RED85572a50d79a11c27c9171cc9180d7a53128bea0-> exact checkout attestation; browser-timeout REDa74e150c06c22e3caee48446d03c3b0726bfc0f5-> browser-only 60-minute ceiling while build/Office stay at 30.After #299 moved Ready, CodeRabbit identified the fourth, still-valid false-green weakness on predecessor
b7e9bb8156a3e46204523ab37292566811f560f8. Current1efbd632719b0e54c5a33e3a95224a4bd2f869d3slices the three repository workflow jobs independently, binds each timeout and checkout contract to its own job, requires exact-head verification immediately after checkout and before pnpm/setup-python consumers, and checks thepull_requestYAML trigger structurally without a base-branch filter. CodeRabbit marks that Major thread addressed/resolved.A later Devin informational observation correctly notes that the repository runtime check compares local
HEADwith the same immutable event SHA supplied to checkout. That proves checkout honored the event-bound ref; independent live PR/base resolution remains the separate governance/review step before lifecycle mutation and is not silently claimed by the job assertion.Exact-current-head evidence
For unchanged exact #299 head
1efbd632719b0e54c5a33e3a95224a4bd2f869d3:32635939468: completed / success;97185600342: success, including exact source-head checkout verification, typecheck, exact 100% owned-production coverage, library build, packed-package verification, and demo build;97185600177: success, including exact source-head checkout verification, Playwright dependency/revision installation, and real cross-engine evidence inside the bounded 60-minute ceiling;97185600282, 3.1297185600292, 3.1397185600341, 3.1497185600286: success with exact source-head checkout verification, dependency consistency, 100% docstring/branch coverage, wheel, and packaged schema/license gates;32635939483: GitHub aggregate status is success, but this is non-passing / false-green supply-chain evidence. Dependency-review job97185600223checked out synthetic merge12668622e38473c14dbb7d22bb9e3e0c05f1ea8a; its exact3b38ead2d00f44eb578d0689087b9293b3dabe1e...1efbd632719b0e54c5a33e3a95224a4bd2f869d3support probe returned HTTP403, emittedDependency review is unavailable for ContextualWisdomLab/inkspan; skipping dependency-review hard gate., wrotesupported=false, skipped the pinned dependency-review action, and still concluded green. Foreign owner:ContextualWisdomLab/.github#810, active repair PR #897;32635939469: GitHub aggregate status is success and the scan reported no findings, but exact-source evidence is non-passing because job97185600190checked out synthetic merge12668622e38473c14dbb7d22bb9e3e0c05f1ea8arather than source head1efbd632719b0e54c5a33e3a95224a4bd2f869d3. Foreign exact-submitted-revision owner:ContextualWisdomLab/.github#1222, active repair PR #941;COMMENTEDreviews and maintainer thread replies only, qualifying approvals 0;The repository-local #299 CI repair is technically green, but the complete required evidence set is not. A green aggregate central status cannot substitute for a skipped hard gate or a wrong checkout SHA. OSV/Trivy/Scorecard success is not a semantic substitute for the skipped dependency-review action. Pending, queued, skipped, cancelled, absent, neutral, failed, stale, predecessor, status-only, model-only, wrong-checkout, or synthetic-merge evidence is non-passing.
Foreign owner acceptance and downstream boundary
There is no correct Inkspan-local source workaround for the central dependency-review capability path or the central synthetic-merge checkout. The existing foreign owners have been advanced with the exact affected Inkspan SHAs/runs/jobs; do not add a leaf workaround or create duplicate central writers.
Before #299 can be treated as merge-ready under the evidence contract, the corresponding central repairs must reach protected
.github/main, then unchanged or descendant #299 must acquire fresh central evidence that proves:supported=false/skip path is taken;refs/pull/*/mergecheckout evidence.After #299 eventually integrates, every stacked PR must independently acquire its own exact-current-head repository workflow generation; parent/predecessor evidence cannot substitute. The 60-minute browser bound is a finite infrastructure allowance, not permission to make browser evidence optional or unbounded.
The repair is active-PR truth only. Keep #299 Ready but unmerged while these central exact-evidence blockers and every then-live governance requirement remain unresolved. Before merge, refetch unchanged exact head/live protected base, ancestry/mergeability, live governance, formal reviews/threads, and every applicable repository/central workflow. Do not self-approve, transfer predecessor evidence, weaken gates, move protected main, or fabricate release identity.