feat(stagecraft): publish @swamp/stagecraft, without the swamp-club Lab tracker (swamp-club #2820) #449

Merged
seth merged 3 commits from cue/2820-stagecraft-publish-swamp into main 2026-10-02 20:52:22 +00:00
Owner

Publishes @swamp/stagecraft 2026.10.02.1 to the stable channel. Merging this PR is the release: CI publishes when manifest.yaml changes on main. Seth merges.

Closes swamp-club #2820.

What changes

  • The manifest (from #2947, rebased onto main with #2891 and #2956): stagecraft/manifest.yaml. no_manifest_test.ts is replaced by manifest_test.ts.
  • The swamp-club Lab tracker is kept in the repo but not shipped.
    • tracker/swamp_club.ts is not in models:.
    • The built-in tracker used to import the auth.json reader from the Lab backend. The reader now lives in _lib/tracker/core/stored_login.ts, and both trackers import it from there. It takes the reading tracker's name, so a broken login is reported as a builtin auth error rather than a swamp-club one.
    • boundary_test.ts rule 7: no production module except the Lab's own two imports the Lab code.
    • manifest_test.ts fails if the manifest names the Lab adapter, its backend, its fake or the auth test data.
    • The Lab's tests still pass from source.
  • Metadata:
    • The sdlc label is replaced by process.
    • The description's getting-started adds swamp init, as the README has it.
    • The version was re-read with swamp extension version.
  • Docs: a DESIGN.md decision-log entry ("the swamp-club Lab adapter is kept, not shipped"), and REFERENCE.md now says the Lab tracker is not in the package.

Checks on the real tree

Run with swamp 20261002.194016 (includes #2949 and #2952) on an unmodified git archive export of 08f69f671:

  • swamp extension fmt stagecraft/manifest.yaml: no changes.
  • swamp extension quality stagecraft/manifest.yaml: 12/12. repository-verified is confirmed by the server on publish.
  • swamp extension push stagecraft/manifest.yaml --dry-run: completes; the archive is 1.3MB.
    • The token-count secret warnings are gone.
    • Remaining non-blocking warnings: no extension adversarial review is recorded (CI's --yes passes it), long lines and base64 in the generated studio assets, and the version-drift check, which is expected on a first publish.
    • The archive contains no swamp_club file, fake, test or testdata/auth.

Packaged install

The dry-run archive was installed into a fresh repo:

  • swamp model type search stagecraft lists factory, work-item, studio, tracker and linear. There is no @swamp/stagecraft/swamp-club.
  • The stagecraft skill arrives with the package.
  • A factory made from the starter example validates, with its 4 saved scenarios passing.
  • The studio's Design, Simulate, Board and work-item pages render, Ticket tab included (checked in headless Chromium).
  • On the built-in tracker, a ticket was created, claimed, started, published (assigned from the stored login) and driven to its first human stop, plan-approval.

Verification

Attestation 25308125-a4eb-4cbd-ba57-e1e1f00ca558 for 08f69f671:

  • verify-build (run 099df38f): 13/14 passed, idempotency skipped by guard. stagecraft's check, lint, fmt, tests (925), integration tests (58) and lockfile all passed.
  • verify-reviews (run a3dd8cfc): code-review pass, adversarial-review pass, ci-security-review skipped by guard.

Low review notes, left for later:

  • stored_login_test.ts doesn't cover the unreadable-file path.
  • stored_login.ts is missing a blank line in one place.
  • manifest_test.ts only scans engine/ and tracker/ for entry points.
  • A hand-written tracker.kind: swamp-club gives a type-not-found error rather than a clear refusal.

After merge

  • Confirm the registry shows @swamp/stagecraft.
  • Confirm swamp extension pull @swamp/stagecraft works in a fresh repo.
  • Then the announcement (#2820 step 10).

🤖 Generated with Claude Code

Publishes **@swamp/stagecraft** `2026.10.02.1` to the **stable** channel. Merging this PR is the release: CI publishes when `manifest.yaml` changes on main. Seth merges. Closes swamp-club #2820. ## What changes - **The manifest** (from #2947, rebased onto main with #2891 and #2956): `stagecraft/manifest.yaml`. `no_manifest_test.ts` is replaced by `manifest_test.ts`. - **The swamp-club Lab tracker is kept in the repo but not shipped.** - `tracker/swamp_club.ts` is not in `models:`. - The built-in tracker used to import the `auth.json` reader from the Lab backend. The reader now lives in `_lib/tracker/core/stored_login.ts`, and both trackers import it from there. It takes the reading tracker's name, so a broken login is reported as a `builtin auth` error rather than a `swamp-club` one. - `boundary_test.ts` rule 7: no production module except the Lab's own two imports the Lab code. - `manifest_test.ts` fails if the manifest names the Lab adapter, its backend, its fake or the auth test data. - The Lab's tests still pass from source. - **Metadata:** - The `sdlc` label is replaced by `process`. - The description's getting-started adds `swamp init`, as the README has it. - The version was re-read with `swamp extension version`. - **Docs:** a DESIGN.md decision-log entry ("the swamp-club Lab adapter is kept, not shipped"), and REFERENCE.md now says the Lab tracker is not in the package. ## Checks on the real tree Run with swamp `20261002.194016` (includes #2949 and #2952) on an unmodified `git archive` export of `08f69f671`: - `swamp extension fmt stagecraft/manifest.yaml`: no changes. - `swamp extension quality stagecraft/manifest.yaml`: 12/12. `repository-verified` is confirmed by the server on publish. - `swamp extension push stagecraft/manifest.yaml --dry-run`: completes; the archive is 1.3MB. - The token-count secret warnings are gone. - Remaining non-blocking warnings: no extension adversarial review is recorded (CI's `--yes` passes it), long lines and base64 in the generated studio assets, and the version-drift check, which is expected on a first publish. - The archive contains no `swamp_club` file, fake, test or `testdata/auth`. ## Packaged install The dry-run archive was installed into a fresh repo: - `swamp model type search stagecraft` lists factory, work-item, studio, tracker and linear. There is no `@swamp/stagecraft/swamp-club`. - The stagecraft skill arrives with the package. - A factory made from the `starter` example validates, with its 4 saved scenarios passing. - The studio's Design, Simulate, Board and work-item pages render, Ticket tab included (checked in headless Chromium). - On the built-in tracker, a ticket was created, claimed, started, published (assigned from the stored login) and driven to its first human stop, `plan-approval`. ## Verification Attestation `25308125-a4eb-4cbd-ba57-e1e1f00ca558` for `08f69f671`: - **verify-build** (run `099df38f`): 13/14 passed, idempotency skipped by guard. stagecraft's check, lint, fmt, tests (925), integration tests (58) and lockfile all passed. - **verify-reviews** (run `a3dd8cfc`): code-review pass, adversarial-review pass, ci-security-review skipped by guard. Low review notes, left for later: - `stored_login_test.ts` doesn't cover the unreadable-file path. - `stored_login.ts` is missing a blank line in one place. - `manifest_test.ts` only scans `engine/` and `tracker/` for entry points. - A hand-written `tracker.kind: swamp-club` gives a type-not-found error rather than a clear refusal. ## After merge - Confirm the registry shows @swamp/stagecraft. - Confirm `swamp extension pull @swamp/stagecraft` works in a fresh repo. - Then the announcement (#2820 step 10). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Adds stagecraft/manifest.yaml for @swamp/stagecraft and replaces the
go-live guard (no_manifest_test.ts) with manifest_test.ts, which checks
that the manifest lists every model and report entry point, the skill and
each additional file.

This commit is not merged by #2947: merging a manifest change to main
publishes. It lands with the publish, swamp-club #2820, after a rebase
and a fresh `swamp extension version` read.

The registry shows the manifest's description as the extension's readme,
so it carries the overview and getting-started. docs/studio.png can't
ship: additionalFiles allows only .ts, .json, .md, .yaml, .yml and .txt.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The manifest no longer lists tracker/swamp_club.ts. The built-in tracker
read swamp's stored login through the Lab backend; that reader moved,
unchanged, to _lib/tracker/core/stored_login.ts, and both trackers import
it from there. boundary_test.ts rule 7 fails when production code other
than the Lab's own two modules imports either of them, and manifest_test.ts
fails when the manifest names the Lab adapter, its backend, its fake or the
auth test data. The Lab code and its tests stay in the repository.

The manifest's sdlc label becomes process, and its getting-started gains
swamp init, as the README has it. DESIGN.md records the decision;
REFERENCE.md says the Lab tracker is not in the published package.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fix(stagecraft): a stored-login error names the tracker that read it (swamp-club #2820)
All checks were successful
CI / Review Integrity (pull_request) Successful in 1m5s
CI / Validate Attestation (pull_request) Successful in 59s
08f69f6717
The shared auth.json reader labelled every auth error swamp-club, so a
public user's broken login read as a Lab problem. readSwampAuthFile now
takes the reading tracker's name and defaultSources(tracker) replaces
DEFAULT_SOURCES in core; the built-in tracker passes builtin, and the Lab
backend keeps its own readSwampAuthFile and DEFAULT_SOURCES bound to
swamp-club. manifest_test uses its manifest() helper for the Lab check.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit 92281d70bf into main 2026-10-02 20:52:22 +00:00
seth deleted branch cue/2820-stagecraft-publish-swamp 2026-10-02 20:52:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!449
No description provided.