Repository navigation
fix(release): pack @flybot/project in the tarballs and test the list - #2841
Conversation
…hinkFlowLab#2840) ThinkFlowLab#2829 moved the Project domain out of core into plugins/project, but the package list in check-pack.mjs was not updated: the Docker image and the release tarballs were built from five packages, so neither carried @flybot/project while the docs and the plugin suite said it shipped. A test now compares that list with the plugin directories on disk, so the next plugin cannot drop out silently. Refs ThinkFlowLab#2831, which keeps test.yml and nightly.yml (gate files, need a signature).
|
@Birfy review request for the current tip What this PR is: #2829 moved the Project domain out of core into Scope: The test enumerates At this tip: Asking for: |
|
Verdict: PASS at 18b9db2 Ran at this tip: Red first: in the tip tarball I put What I checked:
#2831 coverage: this PR does the third of the three places only — T3: the change only adds a package to the release/image pack list and its test; it does not relax any assertion, so it is safe to enqueue on green once this report exists. |
fix(release): pack @flybot/project in the tarballs and test the list
Fixes #2840
Refs #2831
Owner: Dev-5
Reviewer: Birfy
Written-by: Dev-5
Bot: Dev-5
Claim-Id: 0ddce6f26cc743d38ac26ac90c3638a7
Risk tier: T3
Base: e16c1d3
What changed
#2829moved the Project domain out of core intoplugins/project, but the pack list in.github/scripts/check-pack.mjsstill named five packages.Dockerfilebuilds/pkgs/*.tgzfrom that list and
release.ymlbuilds thedist/*.tgzrelease assets from it, so the imageand the next release would ship without
@flybot/project.check-pack.mjsnamesplugins/project— one line..github/scripts/check-pack.test.mjsreads theconst packages = [...]line and comparesit with the plugin directories that really exist: it enumerates
plugins/*/package.jsonandasserts the set of packed directories equals that set, item by item. Nothing is hard-coded, so
the next plugin added to
plugins/fails this test until the pack list names it, and a domainmoved out of
plugins/fails until the list drops it. A second case assertscoreis packedand that every listed directory is a package, so the list does not turn into a filesystem scan.
changelog.d/2840-check-pack-project.fixed.md.325fc87d(2026-11-11T02:58:47Z) is the sha the owner's running instance was pulled at and it predates #2829 (04:17:26Z), so that instance is unaffected; the gap only reaches the Docker image and the next tag, and must be fixed before that tag.Scope
Only the pack list. Not in this PR:
.github/workflows/test.ymlmatrix row (plugin: [..., project]) — gate file, needs asignature, stays in CI: run plugins/project in the plugin matrix, the nightly steps and the pack check (needs a gate-file signature) #2831.
.github/workflows/nightly.ymlplugin steps — same, CI: run plugins/project in the plugin matrix, the nightly steps and the pack check (needs a gate-file signature) #2831.docker.yml's link assertion — it only asserts thelink:dependencies ofds-bot,social,treeandtimelineand does not nameproject; making it cover@flybot/projectis its ownfollow-up.
No workflow file is touched.
check-pack.mjsis not inpolicy/gates.json'sgateFiles, sopolicy-signdoes not fire and no signature is needed for this change.Refs #2831, notFixes:#2831 stays open for the two signed lines, and
Fixes #2840is what this pull request closes.Red first
check-pack.mjshad no test. On this tip with the source reverted and the new test kept, twoidentical runs:
Green after the fix:
2/2.Ran
At the tip (local commit
fcb48a2c;.flybot_push.pyrebuilds it through the API as the headsha with the same tree, parent and message):
TZ=UTC npm run verify: core lint 88 warnings / 0 errors,arch-docs: OK (3 changed file(s)),plugin lint 0 errors (social 36 / timeline 9 / tree 2 / workflow 16 / project 0 warnings),
10 patches apply cleanly, core3086/3086, social619, tree149, timeline172,workflow
528, project147..github/scripts+policyface:675 tests / 674 pass / 1 fail; the only red is#749(testing-layers), which names only this machine's worktrees (
.cache/wt-2547,tmp/gates,tmp/p686) and is red on a clean base too. The two new tests areok 76andok 77.check-pack.mjson the fixed tip: six packages,@flybot/project@0.1.0: 13 files, 39 KiB packed,missing/leaked0. A real--outrun writes six.tgz; the project tarball hasindex.js,client.js,src/,package.json,README.md,cordis.patch.yml, and notest/ordev/.interop 37/37,live-e2e 34/34,changelog: 11 fragment(s) well formed.generateleaves no tracked change,ds-bot-patches checkok,canonicalsays generate is ano-op,
git diff --checkclean.Not run: the Docker build and
release.ymlthemselves (no Docker daemon here; the pack script iswhat both call), and CI's own runs on this fork PR.
Checkpoint
Tip
18b9db23fc3b1cdeda8f8c7696e1aba0840c5279(fork head; the local commitfcb48a2chas the same tree, parent and message).{ "pr": 2841, "claim": "Dev-5", "issue": 2840, "summary": "`check-pack.mjs` listed five packages, so the Docker image and the release tarballs were built without `@flybot/project`. The list now names `plugins/project`, and a new test compares it with the plugin directories that really exist, so the next plugin cannot drop out silently. A real `--out` run writes six tarballs, and the project one carries `index.js`, `client.js`, `src/`, `package.json`, `README.md` and `cordis.patch.yml`. No workflow file changes: `test.yml`, `nightly.yml` and the `docker.yml` link assertion stay put.", "files": [ ".github/scripts/check-pack.mjs", ".github/scripts/check-pack.test.mjs", "changelog.d/2840-check-pack-project.fixed.md" ], "checks": { "ran": "TZ=UTC npm run verify; .github/scripts+policy 675 tests / 674 pass (only red: #749, names this machine's worktrees only); check-pack dry-run and --out (6 tgz); interop 37/37; live-e2e 34/34; changelog 11 fragments; ds-bot-patches generate/check/canonical no-op; git diff --check clean", "result": "green", "at": "18b9db23fc3b1cdeda8f8c7696e1aba0840c5279" }, "next": "none — ready for review" }