#2820 stagecraft: publish @swamp/stagecraft: manifest, Lab exclusion, real-tree checks, packaged install, merge
Opened by skunk-ape · 9/30/2026· Shipped 10/2/2026
Publish @swamp/stagecraft: the final PR that adds the manifest, runs every publication check on the real tree, and merges. CI publishes on merge.
Rewritten 2026-10-02 (Seth). The earlier body predates the rename to stagecraft (#2932), the publication prep (#2947) and the decisions below; it is kept in this issue's history.
Where things stand
- Manifest. It's held on branch
cue/2947-stagecraft-manifest(commit 90131cd47), six commits behind main when this was written. It addsstagecraft/manifest.yaml, deletesno_manifest_test.tsand addsmanifest_test.ts. Merging it to main publishes (.forgejo/workflows/publish.yml). - #2947 got quality to 12/12, passed fmt and a dry-run push on a scratch copy, and installed the packaged archive into a fresh repo, running it to a first human stop with the studio and skill.
- swamp blockers are cleared. #2949 (push's eval check) ships in swamp
20261002.182915(e2b0a082), so the real tree can be dry-run pushed for the first time. #2952 (token-count fields flagged as secrets) is merged in swamp (d7714fef); its warnings never block a push. - Linear has been tested against a real workspace by Seth, and it works.
- Waits on: #2891 (Simulate follow-ups) and #2956 (work-item page follow-ups), both in progress. Seth wants them landed before this merges.
- #2821 (software-factory's future and deprecation) is deferred and doesn't block this.
Checklist
Rebase the manifest branch onto origin/main.
Exclude the swamp-club Lab tracker from the package (Seth, 2026-10-02). It stays in the repo for possible team use but must not ship.
- Remove
tracker/swamp_club.tsfrom the manifest'smodels:. It's listed today. - Break the built-in tracker's import from the Lab backend:
tracker/builtin.ts:36-39importsCredentialSourcesandDEFAULT_SOURCESfrom_lib/tracker/backends/swamp_club.ts, theauth.jsonreader. Move what the built-in tracker needs into tracker core (_lib/tracker/core/) and have both trackers import it from there. - Check that every shipped module refers to the Lab only in strings, never in imports. Candidates include
_lib/engine/tracker_binding.ts,_lib/tracker/core/adapter.ts,relations.ts,ticket_view.tsand the studio bundle. A boundary test should enforce it, asboundary_test.tsdoes for the engine/tracker seam. manifest_test.tsasserts the Lab adapter, its backend, its fake and the auth test data are not in the manifest.- The adapter's own tests keep passing from source.
- Add a DESIGN.md decision-log entry: kept, not shipped, with delete-or-move decided after launch.
- Remove
Version. Re-read it with
swamp extension version @swamp/stagecraftand set it in the manifest.Metadata.
- Replace the
sdlclabel: stagecraft is for any process, not only software. Considerworkfloworprocess. - Check the description against the README, since the registry's Readme tab renders the manifest description.
- Keep
repository:as the repo's other manifests have it.
- Replace the
swamp's checks on the real tree, with no scratch rewrites, recorded in the PR:
swamp extension fmt stagecraft/manifest.yamlswamp extension quality stagecraft/manifest.yaml: expect 12/12swamp extension push stagecraft/manifest.yaml --dry-run
Use a swamp that includes #2949. If a release with #2952 is out, use it, so the token-count warnings disappear too.
Packaged install. Install the dry-run archive into a fresh repo and run from zero to a first human stop:
init --froma starter,validate, the studio (Design, Simulate, Board, a work-item page), and a work item driven to its first human stop on the built-in tracker. Confirm the skill arrives with the extension, and thatswamp model type search stagecraftlists no@swamp/stagecraft/swamp-club.Verification. Run the repo's verify-build and verify-reviews on the PR and post the attestation; no attestation covers the manifest yet.
Channel: confirm with Seth before merging. Stable (CI's default) or beta (
swamp extension push --channel beta). Check whetherpublish.ymlcan pass a channel; beta may need it wired up.Merge: Seth merges. Merging publishes. Then confirm the registry shows @swamp/stagecraft, and that
swamp extension pull @swamp/stagecraftinto a fresh repo works.Announce. Release notes and changelog, plus a short announcement Seth can post. The team overview artifact may help.
Done when
@swamp/stagecraft is published, a fresh repo can pull it and run getting started, the Lab adapter isn't in the package, and every check above is recorded in the PR.
Out of scope: #2821 (deferred), and anything after launch (#2583, #2913, #2847, #2978, #2800, #2774, #2775, #2809, #2665, #2908, #2912).
Shipped
Click a lifecycle step above to view its details.
system commented 9/30/2026, 4:49:42 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
skunk-ape commented 10/2/2026, 1:25:07 PM
From #2819 (PR 436, merged): the stagecraft manifest needs README.md, REFERENCE.md and docs/studio.png in additionalFiles. The README shows the studio screenshot by the relative path docs/studio.png; after publish, check the registry page shows it, and if it does not, switch to the repo's raw URL.
skunk-ape commented 10/2/2026, 2:45:20 PM
Preparation is split out into #2947: the manifest, swamp's extension checks, repo verification and a packaged install. This issue keeps the final publish and announcement.
skunk-ape commented 10/2/2026, 3:36:17 PM
Hand-off from #2947 for the publish:
- The manifest is on the branch cue/2947-stagecraft-manifest (one commit on top of #2947's PR). It adds stagecraft/manifest.yaml, deletes no_manifest_test.ts and adds manifest_test.ts, which checks the manifest lists every model and report entry point, the skill and each additional file. Rebase it onto main, then re-read the version with swamp extension version @swamp/stagecraft (it says 2026.10.02.1 today) before merging. Merging it publishes.
- Run the full verify-build / verify-reviews loop on that PR; #2947 ran the stagecraft checks on the branch but no attestation covers it.
- swamp-club #2949 blocks both swamp extension quality and push for stagecraft (the eval substring check against cel-js in the studio bundle). The publish needs a swamp release with that fix.
- Push warnings to expect: the token-count fields flagged as secrets (swamp-club #2952), long-line and base64 warnings on the generated studio assets, and the request for a push-time adversarial review report, which is bound to the pushed code's hash, so write it at push time.
- The registry shows the manifest description as the readme, not README.md, so the description is the registry page. docs/studio.png can't ship (additionalFiles allows only text types).
- DESIGN.md still says a factory definition rejects a literal ${{ 'until go-live'. That is a go-live decision for this issue.
skunk-ape commented 10/2/2026, 6:21:19 PM
Added scope (Seth, 2026-10-02): the swamp-club Lab tracker stays in the repo but is left out of the published package.
- The manifest held on cue/2947-stagecraft-manifest must exclude extensions/models/tracker/swamp_club.ts, _lib/tracker/backends/swamp_club*.ts (including the fake) and the auth.json test data.
- No shipped code may import the Lab adapter. Shared code that does (the conformance contract, tracker kinds, the studio) gets the import broken, or the reference made test-only.
- A packaged install must list no @swamp/stagecraft/swamp-club type. Add that to manifest_test.ts.
- The adapter, its tests and its fake stay in the repo and keep passing, for use from source.
- Record it in DESIGN.md's decision log. Delete-or-move is decided after launch.
skunk-ape commented 10/2/2026, 7:47:06 PM
Rewritten 2026-10-02 into the final-PR checklist (Seth). #2821 is deferred and no longer blocks. Waits on #2891 and #2956.
Sign in to post a ripple.