Repository navigation
test(ci): freeze audited generated stylesheet fixtures - #2388
Merged
Merged
Conversation
schlessera
marked this pull request as ready for review
October 18, 2026 00:05
This was referenced Oct 18, 2026
schlessera
marked this pull request as draft
October 18, 2026 01:02
schlessera
marked this pull request as ready for review
October 18, 2026 01:04
This was referenced Oct 18, 2026
schlessera
added a commit
that referenced
this pull request
Oct 18, 2026
#2388 binds generated-CSS positive fixtures to producer bytes frozen at the audited revision, and its ruling says legitimate drift requires fresh proof rather than redefining the audit. Refreshing the ci.yml digest here made six frozen fixtures fail. The job-name change now leaves the binding to fresh proof; #2408 asks how re-audits happen. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
Closed
schlessera
added a commit
that referenced
this pull request
Oct 18, 2026
#2388 binds generated-CSS positive fixtures to producer bytes frozen at the audited revision, and its ruling says legitimate drift requires fresh proof rather than redefining the audit. Refreshing the ci.yml digest here made six frozen fixtures fail. The job-name change now leaves the binding to fresh proof; #2408 asks how re-audits happen. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 18, 2026
schlessera
added a commit
that referenced
this pull request
Oct 18, 2026
#2388 binds generated-CSS positive fixtures to producer bytes frozen at the audited revision, and its ruling says legitimate drift requires fresh proof rather than redefining the audit. Refreshing the ci.yml digest here made six frozen fixtures fail. The job-name change now leaves the binding to fresh proof; #2408 asks how re-audits happen. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
schlessera
added a commit
that referenced
this pull request
Oct 18, 2026
…2398) * fix(ci): fail draft-mode proof once the live PR is ready A draft push and a ready_for_review transition seconds apart can be queued out of order: the draft run cancels the confirmation run, then passes `proof` with every product job unselected, leaving a green draft check as the ready PR's latest proof. The draft cadence now reads the live PR and refuses when it is ready, closed or at another head, with the same confirmation-required action as ready feedback. Unreadable live state fails closed. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(ci): cover every draft action and the hosted draft-proof entry point Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(ci): name the draft aggregate apart from candidate proof The live readiness read is a snapshot: a PR marked ready between that read and the draft run's completion could still show a passing `proof` until its confirmation reported. Draft runs now report their aggregate as `draft gates`, so a `proof` row on a pull request only ever comes from feedback (which fails) or confirmation. The workflow guard pins the new name and rejects dropping the draft branch. The audited producer digest for ci.yml is refreshed for the one-line job-name change. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(ci): drive the draft readiness check through its hosted callers Cover a present token through the real API client, malformed live state, and the emitted aggregate refusing a draft run it cannot verify. State in the docs that the live read only fails when it observes readiness; the distinct check name covers a later transition. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(ci): drop the spawned draft aggregate control Planning the whole repository twice (fixture outputs, then the child's selection check) took 20 s locally and timed out at 30 s on a hosted unit shard. A cheap version needs the aggregate to validate the candidate before planning, which changes a pinned producer; #2400 tracks it. The present-token entry-point control remains. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(ci): keep the audited ci.yml producer digest #2388 binds generated-CSS positive fixtures to producer bytes frozen at the audited revision, and its ruling says legitimate drift requires fresh proof rather than redefining the audit. Refreshing the ci.yml digest here made six frozen fixtures fail. The job-name change now leaves the binding to fresh proof; #2408 asks how re-audits happen. Refs #2363 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 19, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2373
What changed
Generated CSS/theme and inclusion self-tests now obtain positive producer fixtures from raw Git blobs owned by audited revision
498270fbdc4ef2788fdd3babb259b647d77f6c77. Current producer bytes are checked separately and refuse binding on genuine audit drift. The real locked offline compiler, temporary theme compilation and installed-asset byte/mode controls remain intact.Why this shape
Copying arbitrary current source into a frozen positive made legitimate #2370 caller changes fail generic self-tests. A pinned independent owner preserves the audit without refreshing any production hash or relaxing refusal. Git history is required offline, as supplied by CI's full-history checkout.
Proof
Base
b7a0885181445125d576e02f61c562d704c81099; actual head recorded with the candidate confirmation.bun run check:pr --base origin/mainpasses all contribution gates, fast invariants and 20 affected import-feedback tests. Strictbun run typecheckpasses.Checklist
docs/reflect the change, or nothing documented moved.Anything left open
Nothing for #2373. Delivered by squash
fcb7d5c5357c550f74300a53b5af5c46570b215f, parent68e12f27eb249c9fe7262a498a0397c04bbda8f4, tree63d5f502f85c5a76722451a29ed329fb98cd550c, exactly matching qualified synthetic checkout2b355c03d1bbc3114c1a98c989ede59bcba56c2f. Confirmation 39085115921, attempt 1, passes metadata, strict/fast verification, all four selected unit shards and aggregate. Every selected job's actual checkout agrees; requested base, immutable parents/tree and aggregate receipt match. Remaining skips are planner-intended. Matching-head merge, fetched main ancestry, exact squash tree, issue closure and PR/issue milestone 0.44.0 are verified. Automatic main-push run 39087160233 also completes successfully.Dependent #2372 requires its own complete proof for its actual candidate; this fixture delivery does not qualify later caller edits. Original failed and superseded/cancelled receipts remain historical evidence.