chore(build): vendor scripts/tailwindcss by pinned-checksum fetch; amend ADR 0002 #57
Labels
No labels
blocked
bug
enhancement
high-priority
low-priority
needs-info
needs-triage
ready-for-agent
ready-for-human
referenced
research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gabogg/hikcentral#57
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Spun out of #14 Candidate 4 during the grilling session of 2026-09-22. Candidate 4 is otherwise delivered — this is a reproducibility gap in what shipped.
Problem
scripts/build-css.sh:14invokes$DIR/scripts/tailwindcssto compileapp/static/css/tactical-bundle.min.css. That binary is gitignored (.gitignore:9) and is 41 MB.So a fresh clone cannot rebuild the stylesheet. The air-gapped asset pipeline is reproducible only on machines that already happen to have the binary, which is the opposite of what the air-gap guarantee is for. The compiled bundle is committed, so the application runs — but any change to
input.cssor to a template's utility classes cannot be recompiled from a clean checkout.Also: ADR 0002 is stale on two points
docs/adr/0002-industrial-brutalist-frontend-architecture.md:43still lists Candidate 4 as "safely deferred". It shipped on 2026-09-10 (commitd4660b6).:34mandates a "Native Node 22 test harness (node:test,node:assert) wrapped intests/test_frontend_modules.py". Node is therefore already a hard dev-time dependency, which contradicts #14's "zero npm, zero Node.js" framing for Candidate 4. The binding constraints are:16("eliminate runtime external CDN scripts") and:17("all CSS, icons, fonts, and scripts must be vendored and served locally") — both about runtime, not build time.Suggested fix
Fetch by pinned checksum rather than committing 41 MB into git history permanently:
build-css.shinvokes it when the binary is absent.git-lfs was considered and rejected — it adds infrastructure for one file. Committing the binary was rejected because git history is permanent.
Acceptance criteria
tactical-bundle.min.cssfollowing documented steps.:34mandates.🤖 Generated with Claude Code
Triage resolution — 2026-09-23
This resolution supersedes the suggestion that
build-css.shshould downloadthe compiler automatically.
Initial support is Tailwind CLI 3.4.17 on Linux x86-64, matching the existing
compiler. Keep compiler upgrades and additional native build platforms separate.
Windows deployment consumes the committed CSS bundle.
Acceptance:
same committed checksum. A mismatch fails setup/build rather than executing
an unverified compiler.
A missing binary produces an actionable setup error.
setup or offline staging.
runtime asset independence from development dependencies, including Node tests.
The ADR clarification is prepared locally in this triage session; integrate it
with the implementation rather than duplicating it.
ADR 0002 criteria met by PR #63 (2026-09-23).
PR #63 lands the ADR 0002 clarification: Candidate 4 is recorded as delivered (
d4660b6, 2026-09-10), the air-gap claim is narrowed to runtime assets, and the Node test harness is stated as still required. Provisioning is referenced back to this issue. Both ADR checkboxes are now ticked.This supersedes the note "integrate it with the implementation rather than duplicating it": the ADR text is no longer part of this issue's deliverable. Only the pinned-checksum provisioning of Tailwind CLI 3.4.17 (Linux x86-64) remains. If that work changes what the ADR says about provisioning, update the single sentence that points here.