5.4 KiB
Session 0015.0 — Transcript
App: dev-claude-plugin Start: 2026-06-05T06-29 (PST) End: 2026-06-05T06-34 (PST) Type: coding Goal: Fix the wart the operator noticed ("why are we saving to multiple places?") —
publish-transcript.shleft the local staging copy behind after publishing, so stale--INPROGRESSplaceholders accumulated in~/.wgl/transcripts/. Outcome: Shipped. PR #8 merged tomain(merge0a7b658); plugin0.13.0 → 0.14.0. Finalized publish now cleans the session's local staging scratch; checkpoints and dry-runs are untouched.
Plan
Add local-staging cleanup to skills/wgl-session-common/scripts/publish-transcript.sh:
- After a finalized publish (push succeeded, or idempotent no-changes
exit), remove the session's local staging copies — the finalized file + any
superseded same-ordinal
--INPROGRESSplaceholder — scoped strictly to the staging dir. - No-op for
--INPROGRESScheckpoints (session still live, needs its working copy) and for--dry-run. - TDD: offline fixture (local bare repo as remote) proving the wart, then the
fix, then green. Bump
plugin.json. Edit SOURCE only (per CLAUDE.md), let the operator re-install.
Pre-session state
Conversation context: this followed two engineering sessions (0002 digest sweep,
0003 the flotilla-only-provisioning rule). The operator asked why transcripts
appear "in multiple places"; the answer surfaced a genuine wart — the remote
session-history repo is the one record, the local ~/.wgl/transcripts/<app>/
dir is an ephemeral buffer, but publish never cleaned the local buffer, so it
accumulated (confirmed: 6 stale files in engineering's dir, 25 in
dev-claude-plugin's). Plugin on clean main at 0.13.0; no other plugin sessions
in flight.
Turn-by-turn arc
- Q&A → wart. Explained the three locations (durable remote record / local staging buffer / ephemeral temp clone) and named the real redundancy: publish leaves the local buffer behind. Operator: "Oh, fix that please."
- Brainstorming invoked (the fix had a real design nuance). Key nuance
surfaced: cleanup must NOT delete the working copy during an
--INPROGRESScheckpoint re-publish — only on a finalized publish. - Claim plugin session 0015 (
dd9f875); branchfix/publish-transcript-clean-local-staging. - TDD. Wrote an offline fixture (
/tmp/test-publish-cleanup.sh) — fake remote = local bare repo,--sessions-remote/WGL_APP_NAMEoverrides. Ran it against the unfixed script: 3/6 fail (finalized publish leaves both local copies), 3/6 pass (checkpoint-keeps + scoping already hold). - Implement. Added
clean_local_staging()(guards--dry-run+--INPROGRESS;find … -name SESSION-<sid>-TRANSCRIPT*.mdwithin the staging dir;rm -f), wired at both the no-changes early-exit and after the push; updated the header docs. Re-ran fixture: 6/6 pass;bash -nclean. - Ship.
plugin.json0.13.0→0.14.0; commit (Co-Authored-By) → push → PR #8 via Gitea API → merge (HTTP 200) → syncmain, delete branch. Confirmed 0.14.0 + the fix onmain. - Finalize. Updated plugin memory; wrote this transcript and published it through the fixed SOURCE script (dog-fooding: it auto-cleaned 0015's own local staging copy); then hand-swept the pre-fix orphan staging files.
Deferred decisions
Low-confidence autonomous calls made without operator input:
- Version bump = minor
0.14.0, not patch0.13.1. Treated the cleanup as an observable behavior change (it now deletes local files) worth a minor; a patch would also be defensible for a pure bugfix. - Cleanup removes the finalized local copy too, not just the
--INPROGRESSplaceholder. Rationale: the staging dir is wholly ephemeral once the record is durably on the remote. Alternative was to remove only the placeholder and keep the finalized file locally. - Did not commit the fixture test. The repo has no test-harness convention
yet; adding one (a
tests/dir) would set a new convention without discussion. Kept the fixture as ad-hoc verification (the team's existing "exercised against a fixture" pattern). A real test-harness is a candidate follow-up.
Cut state (end of session)
| Repo | Branch | Commits | State |
|---|---|---|---|
| wiggleverse-dev-claude-plugin | main | c60c076 (fix) → 0a7b658 (merge of PR #8) |
merged, pushed; local main synced; feature branch deleted |
publish-transcript.sh +27 lines; plugin.json 0.13.0→0.14.0. Working tree
clean on origin/main.
What lands on the operator's plate
- Operator re-install to make 0.14.0 live (the cache still lags — the running session used the 0.12.0 cache for the claim; the publish of this transcript dog-fooded the fixed source script directly).
- The pre-existing carry-over follow-up is unchanged: align the plugin skills to
the new engineering
flotilla-only-provisioningrule (§8.5) — see memory.
Prompt the operator can paste into the next session
/goal Align the plugin skills to the flotilla-only-provisioning rule (engineering §8.5): make scaffold-gcp-project / wgl-gitea-admin (repo-creation path only) / wgl-session-coding-init's DEPLOY-FLOTILLA card defer INITIAL provisioning to the launch-app/flotilla suite (hand the operator the flotilla command(s) rather than hand-provisioning); keep ad hoc Gitea/gcloud ops unchanged. Bump plugin.json. See plugin project memory.