98 lines
5.4 KiB
Markdown
98 lines
5.4 KiB
Markdown
# 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.sh` left the local staging copy behind after publishing, so stale `--INPROGRESS` placeholders accumulated in `~/.wgl/transcripts/`.
|
|
> Outcome: **Shipped.** PR #8 merged to `main` (merge `0a7b658`); plugin `0.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 `--INPROGRESS` placeholder — scoped strictly to the
|
|
staging dir.
|
|
- **No-op** for `--INPROGRESS` checkpoints (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
|
|
|
|
1. **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."
|
|
2. **Brainstorming** invoked (the fix had a real design nuance). Key nuance
|
|
surfaced: cleanup must NOT delete the working copy during an `--INPROGRESS`
|
|
checkpoint re-publish — only on a finalized publish.
|
|
3. **Claim** plugin session **0015** (`dd9f875`); branch
|
|
`fix/publish-transcript-clean-local-staging`.
|
|
4. **TDD.** Wrote an offline fixture (`/tmp/test-publish-cleanup.sh`) — fake
|
|
remote = local bare repo, `--sessions-remote`/`WGL_APP_NAME` overrides. Ran
|
|
it against the unfixed script: 3/6 fail (finalized publish leaves both local
|
|
copies), 3/6 pass (checkpoint-keeps + scoping already hold).
|
|
5. **Implement.** Added `clean_local_staging()` (guards `--dry-run` +
|
|
`--INPROGRESS`; `find … -name SESSION-<sid>-TRANSCRIPT*.md` within 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 -n` clean.
|
|
6. **Ship.** `plugin.json` 0.13.0→0.14.0; commit (Co-Authored-By) → push →
|
|
**PR #8** via Gitea API → merge (HTTP 200) → sync `main`, delete branch.
|
|
Confirmed 0.14.0 + the fix on `main`.
|
|
7. **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 patch `0.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 `--INPROGRESS`
|
|
placeholder. 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-provisioning` rule (§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.
|
|
```
|