script/ and Makefile drift from the org models; make dev is not a shim, make build is missing
#28
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?
Problem
Diffed all 12
script/files against the models in thepromptsrepo. Three are byte-identical (check,setup,precommit); nine diverge. Verified onmainatfbfe1df.1.
script/dockerwas edited despite being a must-stay-identical fileREPO_POLICIES.mdexplicitly names the scripts that stay byte-identical across all repos so they can be maintained centrally —script/projectname,script/docker, and friends.script/dockerdiverges:docker build -t ... .becametimeout 300 docker build -t ... ..The
timeout 300presumably enforces "Docker builds must complete in under 5 minutes", but that policy does not authorize editing a shared file. If the timeout belongs anywhere it belongs in the model, upstream.2.
script/lintis a duplicate ofscript/fmt-check— there is no JS linterBoth now run
yarn prettier --check .. They are behaviourally identical, soscript/checkruns the same prettier pass twice and the repo has no actual linter for JavaScript.README.md:162acknowledges it: "Add eslint for JS linting (currently lint target runs prettier only)". No eslint config exists anywhere — no.eslintrc*, noeslint.config.js, noeslintConfigkey.Contrast the backend, which has a real linter. The frontend — 1262 lines of JavaScript — has none.
3. Other script divergences
script/bootstrapAPT_UPDATEDguard and anapt-get updatebefore install — a functional change from the model. Pinned-versions date comment moved 2026-07-06 -> 2026-07-07.script/fmtyarn run prettier --write '**/*.md' --tab-width 4 --prose-wrap always. Repo:yarn prettier --write .. The repo version is arguably better for a JS repo (it formats JS/CSS/HTML too, and.prettierrcsupplies the flags) but it dropsyarn run.script/fmt-checkfmt.script/cibuildscript/check. Body identical.script/install-precommit"$hook"variable it declares rather than the literal path. Cosmetic improvement.script/testyarn buildas the test.Not a finding: all 12 scripts are correct POSIX sh with
#!/bin/sh,set -eu, and the mandated repo-root idiom.4. Makefile gaps
make devis not a thin shim.Makefile:13-14runsyarn devinline; there is noscript/dev. This breaks the shim pattern and the "always use Makefile targets instead of invoking the underlying tools directly" rule at the layer below. It is also the only target missing a leading@.make buildtarget.REPO_POLICIES.mdrequires targets "for every common operation... building artifacts (make build)", andCODE_STYLEGUIDE_JS.mdprefersmake build.package.jsonhas abuildscript; the Makefile does not expose it. Norun,preview, orcleaneither.5.
.prettierignorehides the backend from formatting.prettierignore:5excludesbackend/. Sincescript/fmt-checkrunsyarn prettier --check ., every markdown file underbackend/escapesmake checkentirely.backend/README.md's config table is visibly misaligned as a direct result.6.
.claudeentries in committed repo config.dockerignore:5(.claude) and.prettierignore:5(.claude/) are agent-tooling residue committed into shared repo configuration. They are additions to the models, inconsistent with each other, and inconsistent with.gitignore, which does not list the directory at all. They should not be in the repo's shared config — a developer-local ignore belongs in.git/info/exclude.Definition of done
script/dockeris restored to the model byte-for-byte. If the 5-minute timeout is worth keeping, propose it upstream in thepromptsrepo rather than diverging here — note in the PR which you did.script/lintruns a real JavaScript linter. eslint is the default choice; use its modern flat config (eslint.config.js).script/fmt-checkkeeps prettier. The two must stop being duplicates.make devshims to ascript/dev, consistent with every other target, and gains its leading@.make buildexists and shims to ascript/build..prettierignoreno longer excludesbackend/; markdown underbackend/is formatted and passesmake fmt-check..claude/.claude/entries are removed from.dockerignoreand.prettierignore.make checkpasses and still does not modify tracked files.TODO.mdupdated in the same commit.(closes #N).Implementation requirements
#!/bin/sh,set -eu, no bashisms, repo-root idiom$(cd "$(dirname "$0")/.." && pwd -P).script/to cover the backend. These two overlap heavily — land #16 first and rebase this onto it, or fold this into #16 if the implementer finds them inseparable. Say which in the PR.script/test's substance here; #21 owns that.maketargets andscript/entrypoints only.