A minified vendored bundle is committed to the repo, which REPO_POLICIES forbids #145
Reference in New Issue
Block a user
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?
Raised by the independent review of #144 while sweeping shipped assets for debug logging. Pre-existing and not attacker-reachable, so it is not milestoned 1.0.0 — it belongs to the next cycle.
static/js/alpine.min.jsis a committed, minified third-party bundle.REPO_POLICIES.md:248forbids committing minified bundles.It also carries 8
console.warncalls, which is why it surfaced: the debug-logging sweep in #141 deliberately excluded it as vendored, which is defensible for that sweep but leaves the underlying policy breach in place.The policy exists because a minified blob is unreviewable — nobody can tell what is in it, and it is exactly the shape a supply-chain compromise takes.
REPO_POLICIES.mdalso requires every external dependency be referenced by content hash.Definition of done
REPO_POLICIES.md, and the hash is verified at fetch time.templates/base.html:14is the only loader, so whatever replaces it must satisfy that.Options worth weighing in the PR
script/bootstraphandles other external tools.State which you chose and why. Option 3 is worth genuinely checking before assuming 1 or 2 — grep the templates for how much Alpine is actually used.
Implementation requirements
next, PR based onnext, single commit, title ending(closes #N).TODO.md.make checkplus the Docker lint path with the cache defeated (#119).clawbot referenced this issue2026-08-12 13:06:15 +02:00
Moved INTO the
1.0.0milestone, reversing the "not milestoned" line in the body above.Reason: the test for 1.0 is not only what an attacker can reach but whether the shipped artifact is verifiable. A 1.0 release that serves unreviewable, un-hash-pinned third-party JavaScript into the admin's browser fails that directly, and it breaks two rules
REPO_POLICIES.mdstates the release claims to follow (no committed minified bundles; every external reference pinned by content hash). "Pre-existing" is an argument about when it started, not about whether it should be in the tag.Direction: take option 1 — fetch at build time from a pinned URL with a verified sha256, the way
script/bootstrapalready handles external tools — unless you find a concrete blocker, in which case option 2. Option 3 (drop Alpine) is real: a template grep shows only 19 directive uses acrossnavbar.html,source_detail.htmlandsource_logs.html. But rewriting working interactive UI by hand at the end of a release cycle trades a supply-chain problem for a regression risk in three pages nobody will re-test carefully, so it is the wrong trade right now. File it as a follow-up if you think it is worth doing later.One correction to the body: the loader is
templates/base.html:13, not:14— line 14 is nowapp.js.clawbot referenced this issue2026-08-17 23:50:11 +02:00