Repository navigation
chore(ci): re-audit generated CSS producers after invocation build - #2625
Merged
Merged
Conversation
schlessera
marked this pull request as ready for review
October 22, 2026 11:07
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.
Refs #2279. Post-merge follow-up to #2458; the full-pressure and hosted acceptance work on #2279 stays open.
What changed
Generated stylesheet inputs qualify again at delivered main
736a3445e82aee509e10f3c8d00b95fc77749202. Refresh the six drifted production digests and move the independent positive-fixture owner/provenance to that same immutable main commit. All 12 producer pins and three reader pins match that owner's Git blobs and the actual checkout. Current producer drift still refuses binding and requires fresh proof.Why this shape
Follow the reviewed re-audit procedure selected in #2408. The changing PR cannot own a positive fixture through commits a squash discards; this separate follow-up names the delivered main squash instead.
Reviewed each changed producer against the previous owner
b7f6360a86be68f7da8cefa93c316ecc0bf9bf42:scripts/build.ts(fix(ci): build runtime packages once per test invocation #2458): advance output-generation revocation after exclusive lease admission and before the first output mutation; pass that token to execution. Every selected package still rebuilds and unqualified isolated-operation contexts still fall back to the ordinary builder.scripts/build-execution.ts(fix(ci): build runtime packages once per test invocation #2458): pass optional generation into the receipt. Package dist cleaning, checked TSC/Tailwind exits, exact stylesheet source/output paths and verbatim theme/token copies remain intact.scripts/build-receipt.ts(fix(ci): build runtime packages once per test invocation #2458): add a validated invocation UUID and output-generation identity to an owner-local diagnostic receipt.finishstill records completion/success only after the checked execution result; errors cannot attest a successful build.scripts/workspace-lease.mjs(fix(ci): build runtime packages once per test invocation #2458): add live ancestor/start-time, checkout inode and held-flock validation plus output-generation revocation. Existing exclusive output ownership remains; the generation token revokes authority and cannot by itself establish a fresh build.scripts/check-pr.ts(chore(ci): allow local sandbox setup up to 1000 ms before refusing preflight #2472): the merged local sandbox setup threshold becomes a named 1000 ms bound instead of 250 ms, retaining the three probes, 5000 ms per-probe timeout and refusal path. No builder or build/browser order changes..github/workflows/ci.yml(fix(ci): retain hygiene and native export diagnostics #2545): only additional native-export/hygiene diagnostic upload paths. No selected job, build, image, proof gate, execution order or failure policy changes.The combined set retains cleaned package output, the locked Tailwind CLI, build-before-browser command order, checked exits and a fresh post-build receipt. The other six producer pins and all three reader pins are unchanged. Re-audit changes no producer implementation, dependency or package output.
Reviewed replacement SHA-256 values:
Proof
Base and audited owner:
736a3445e82aee509e10f3c8d00b95fc77749202. Head:0749b143c7505ea8d726e2607321c78d2d20ed08. Bun 1.4.2. Local mount table: 101 entries.generatedCssInputsfor ui-kit styles/theme/tokens and ui-react styles/theme. Before refresh: 0 pass / 5 fail atCURRENT_AUDITED_PRODUCER_ENABLES_CSS_REUSE(Received: undefined). After refresh: 5 pass / 0 fail, each returning its trackedsrcentry and the checked producer list. The probe remains outside committed test discovery because later legitimate producer drift must remain allowed to run fresh.scripts/build.ts; those same five positives fail with undefined bindings, whilecurrent producer bytes qualify only when they match the frozen auditpasses its drift-refusal assertions. Restore byte-for-byte: all five positives pass again.producer, execution-order, receipt and package-script drift refuse generated stylesheet bindingfails attoBeUndefined()with a returned binding. Restore byte-for-byte: the named negative control passes.generated stylesheet imports own source and checked producer, without current dist artifactsfails atclosure.unresolved.toEqual([])with an unresolved generated CSS import. This is a behavioral assertion, not an unavailable-history/module-load error. Restore byte-for-byte: the positive control passes.bun run typecheck: passed (tsc --noEmit, exit 0).bun run check:pr --base origin/main: passed on the stated final head (exit 0; 295.24 s wall, 364.13 s user + 95.14 s system): lint/leakage and metadata gates, 970 fast tests / 6439 assertions across 48 files, then 225 import-graph tests / 7981 assertions across 18 files, all with zero failures.3125574b81b6c1b62f490ac88b946fa0e2f05576(fix(ci): cover missing dummy driver without host autoload #2623, missing-driver launcher test coverage; test(ci): refresh browser shard costs after navigation split #2624, browser shard-cost metadata). Source review confirms no audited producer/reader or launcher implementation changed. That later base is not incorporated or relabeled as locally tested combined-tree evidence.changesetpassed;contractin progress;draft gatesqueued at the single current-head inspection. Other proof categories are intentionally skipped for draft cadence; no failing check was reported. Pending checks are handed to the coordinator without polling.. Complete selected hosted proof is reserved for the coordinator's later ready-candidate confirmation.Focused command (the first file is a temporary local five-export positive probe):
bun run test ./tmp/generated-css-reaudit.test.ts tests/generated-build-inputs.test.ts tests/generated-theme-inputs.test.ts tests/inclusion-inputs.test.tsA reproducible actual-checkout admission probe:
Checklist
Refsslice.)docs/reflect the change, or nothing documented moved. (Existing re-audit procedure followed; fixture provenance updated.)docs/decisions/provider-history.md): the provider-history guard passes, or nothing on a turn's path changed.Anything left open
The coordinator owns ready-candidate confirmation and merge. This PR stays draft. #2279 retains its separate full-pressure and hosted acceptance work. This proves generated-CSS source binding/admission, not reuse of a particular historical hosted job or a measured speedup. Any subsequent producer drift needs renewed review or continues to require fresh execution under the existing rule.