# Session 0003.0 — Transcript

> App: dev-claude-plugin
> Date: 2026-06-03 (PST) · ~17:00–18:27
> Goal: Add deploy/flotilla context to the coding-session skill; from there,
>   establish the team's docs-first / deterministic-first build philosophy and a
>   natural-language handbook Q&A skill; ship it all.
> Outcome: Shipped. Handbook gained §4.1 + §4.2; tier-1 `agent-context.md` now
>   tracked; new `wgl-dev-handbook` skill; stale handbook banner refreshed.
>   3 PRs merged (engineering #5, #8; plugin #1).

> **Note on this transcript:** `wgl-coding-session-init` was **not** run at the
> start of this session, so no ID was claimed up front. This transcript was
> claimed retroactively at finalize (protocol §"end-of-session", case 3). The
> 17:00 start is an estimate; the work is recorded honestly regardless.

## Plan

The session had no single launch plan — it grew turn by turn as the operator
pulled a thread from a concrete edit up to a stated principle:

1. Add deployment/flotilla context to `wgl-coding-session-init`.
2. Solidify the underlying pattern (docs first; automation references docs).
3. Codify that pattern in the engineering handbook.
4. Build a natural-language handbook Q&A skill; codify the deterministic-vs-NL
   division as a second principle.
5. Commit/push/merge everything; then finalize.

## Pre-session state

- `wgl-coding-session-init` (plugin) covered only session-claim mechanics; no
  deploy/infra context.
- Engineering handbook (`wiggleverse/engineering/README.md`) had §4 but no
  §4.1/§4.2. Its tier-1 digest `agent-context.md` existed only as an **untracked
  working-tree file** (never `git add`ed) — the `~/.claude/wiggleverse.md`
  symlink target was not in git.
- engineering checkout was on branch `slice3-provision-vm-scaffold-gitea`
  (2 commits ahead of main, touching README §5.3).
- A **parallel session** was active in the plugin repo the whole time (it
  committed the session-init roadmap/baseline feature + `resolve-app.py` roadmap
  resolution, and bumped the plugin version repeatedly).

## Turn-by-turn arc

1. **Add deploy/flotilla to `wgl-coding-session-init`.** Surveyed the sources of
   truth (handbook §8, OHM flotilla `CLAUDE.md`, `scaffold-gcp-project`). Asked
   the operator two structure questions → chose a **reference file kept thin**.
   Created `DEPLOY-FLOTILLA.md` (a pointer card: stack one-liner, the three
   load-bearing rules — per-process gcloud config pinning, never-ask-for-secret-
   bytes, deployment-shape-stays-out-of-framework — and pointers to §8 + the
   deployment's operator guide). Added a short section + `${CLAUDE_PLUGIN_ROOT}`
   pointer in `SKILL.md`. Written app-neutral. *(Minor stumble: first
   `AskUserQuestion` call errored — missing `questions` param — re-issued.)*

2. **"Solidify the pattern: docs first, automation references docs."** Reframed
   the init skill as an **index**: added a "shape of this skill" section stating
   the docs-first principle and a pointer table (task → authoritative doc).

3. **"Add it to the engineering docs as a principle."** Added handbook **§4.1
   Documentation leads its automation** (+ TOC), a one-line digest in
   `agent-context.md`, and converted the skill's prose into a *pointer to §4.1*
   (dogfooding the principle). Placed §4.1 as a subsection so no downstream
   section numbers shifted (the digest cites §5.2/§8.4/etc.).

4. **"Create `wgl-dev-handbook`"** + the framing *"deterministic things = CLI,
   natural-language things = skills."* Built the read-only Q&A skill (reads the
   canonical docs live, answers with §-citations, routes operational asks to the
   owning CLI/skill). Registered it in `agent-context.md`'s on-demand list.

5. **"Put that in the handbook too — we build deterministic software wherever we
   see opportunity; skills are for context-injection, doc-pointers, and human↔LLM
   Q&A."** Added handbook **§4.2 Build deterministic software; skills are the
   natural-language layer** (+ TOC + digest), and pointed the dev-handbook skill
   at §4.2 as its "third seam."

6. **"I'm ready — do it all. I don't want to do anything."** Treated this as an
   explicit override of `push-before-pr-review` (which normally leaves the merge
   to the operator) — so I opened **and** merged. Discoveries mid-flight:
   - engineering was on `slice3`, so I lifted only my §4-area edits onto a fresh
     branch off `main` via a saved patch (leaving slice3 untouched), committed,
     and **also started tracking `agent-context.md`** → **PR #5 merged**.
   - The plugin's working-tree changes had **already been committed and pushed by
     the parallel session** (`e4b3226`, which folded in my deploy card + docs-
     first section + its own roadmap work + a 0.2.0 bump). So only the brand-new
     `wgl-dev-handbook/` remained → branched, bumped **0.2.0 → 0.3.0** (per the
     plugin CLAUDE.md "bump on ship" rule), committed → **PR #1 merged**.
   - PRs were opened/merged via the Gitea API helper (`gitea-api.sh`); the token
     never entered the transcript. *(Minor: a `python3` parse of the PR-create
     response errored on display, but the PR was in fact created — confirmed via
     the PR list.)*
   - Deliberately did **not** bundle the parallel session's in-progress
     `resolve-app.py` / init-description work into my commits.

7. **Finalize (`wgl-coding-session-finalize`).** Surveyed: both repos clean, both
   PRs merged. Updated memory (`project_wgl_session_framework.md` — fixed its
   stale "agent-context UNCOMMITTED" note + recorded §4.1/§4.2 and the new skill;
   `MEMORY.md` index line). On approval, did the optional **banner fix**: the
   handbook's top banner + §12 still said "local draft, not yet committed" — fixed
   both (in an isolated worktree, to avoid disturbing the active slice3 checkout)
   → **PR #8 merged**. Then claimed this transcript (#0003) and published.

## Cut state (end of session)

All work landed on `main`. Commit SHAs (cross-repo coherence):

| Repo | Change | Feature SHA | Merge / PR |
| --- | --- | --- | --- |
| engineering | §4.1 + §4.2 + `agent-context.md` tracked w/ digests | `1aac9d5` | `57a6f29` · PR #5 |
| engineering | refresh stale status banner + §12 | `2452587` | `6b860b8` · PR #8 |
| plugin | `wgl-dev-handbook` skill + 0.2.0→0.3.0 | `f760f3c` | `30d226a` · PR #1 |
| plugin | (parallel session) deploy card + docs-first section + roadmap work + 0.2.0 | `e4b3226` | already on main |

- Both repos clean and in sync with origin. engineering left on `slice3`
  (the operator's active branch), untouched by this session's merges.
- Plugin version was bumped further to **0.4.0** by the parallel session after
  this session's 0.3.0 — so the live manifest is 0.4.0.

## What lands on the operator's plate

- **Install the new plugin version** to make `wgl-dev-handbook` live in running
  sessions: `/plugin marketplace update` then `/plugin install
  wiggleverse-dev-claude-plugin` (now **v0.4.0**). Installed copies are downstream
  by design (plugin CLAUDE.md) — this step is deliberately the operator's.
- **Optional:** roll the `@~/.claude/wiggleverse.md` import into more repos'
  `CLAUDE.md` (one-time sweep), per `project_wgl_session_framework.md`.
- **Separate, bigger blocker (unchanged):** OHM `/docs/sessions` deploy
  (`gcloud auth login` + `flotilla deploy ohm-rfc-app`).

## Prompt the operator can paste into the next session

```
Make the new plugin skill live and verify it. First: /plugin marketplace update
then /plugin install wiggleverse-dev-claude-plugin (brings v0.4.0 + the new
wgl-dev-handbook skill into running sessions). Then sanity-check wgl-dev-handbook
by asking it a handbook question (e.g. "what's our rule on inline CLI comments?"
or "why do we prefer deterministic software?") — it should answer with a
§-citation, reading engineering/README.md live (§4.2 is the relevant new section).
Optional cleanup: a one-time sweep adding the `@~/.claude/wiggleverse.md` import
to repos' CLAUDE.md that lack it. Read memory project_wgl_session_framework.md +
project_dev_claude_plugin.md first. (Bigger separate blocker: OHM /docs/sessions
deploy.)
```
