add engineering/0001/SESSION-0001.0-TRANSCRIPT-2026-06-03T16-59--2026-06-03T18-27.md + replace placeholder/variant SESSION-0001.0-TRANSCRIPT-2026-06-03T16-59--INPROGRESS.md

This commit is contained in:
2026-06-03 18:29:00 -07:00
parent cafb2dcc54
commit 342e80a147
2 changed files with 134 additions and 20 deletions
@@ -0,0 +1,134 @@
# Session 0001.0 — Transcript
> App: engineering
> Date: 2026-06-03 (PST) · Start 16-59 · End 18-27
> Goal: ship dev-env v0.2 — the single-file HTTPS bootstrap (SPEC §8.3).
> Outcome: **shipped + merged to main** (PR #7, merge commit 9ae325d). Also
> registered `engineering` as an app (app.json) — this was the first session
> claimed through it.
This is the first session for the `engineering` app: registering it for session
tracking was a prerequisite, resolved at session start.
## Plan
Working branch `dev-env-v0.2-https-bootstrap` off `main`, in an isolated worktree
(the shared engineering checkout was held on a `slice3-*` branch by a concurrent
session). Two operator decisions, resolved up front via AskUserQuestion:
1. **Register engineering as an app first.** It had no `app.json`, so the
session-claim tooling could not resolve where its transcripts live. Created
`engineering/app.json` (One Name `engineering`; sessions → the shared
`wiggleverse/session-history` repo, subdir `engineering`, numeric /
folder-per-session / public).
2. **Bootstrap shape = single file + local self-update.** Build the amalgamated
single file (committed at `dev-env/dist/wgl-devenv`, grabbable over HTTPS via a
Gitea raw/ZIP mirror — no special host pinned). It embeds the bootstrap-subset
runbooks (`base-tools` + `git-ssh`) so a bare laptop runs `doctor` + `git-ssh`.
`self-update` auto-discovers the local engineering clone and `git pull`s over
SSH to refresh the full runbook set (the HTTPS-then-SSH carve-out, SPEC §8.3).
## Pre-session state
- dev-env v0.1 was merged to `main` (PR #4): the doc-as-program engine + 4
onboarding runbooks (`base-tools``git-ssh``repo-layout`
`claude-context`), 32-test stdlib `unittest` suite, the `ShellExecutor` DI seam,
the secret-in-auto-fix lint, PASS/WARN/FAIL/SKIP, idempotency.
- SPEC was at `v0.0.1`; §8.3 deferred the single-file HTTPS bootstrap to v0.2.
- `engineering` was unregistered (no `app.json` anywhere).
- A concurrent session held the shared engineering checkout on
`slice3-provision-vm-scaffold-gitea`.
## Turn-by-turn arc
1. **Session init.** Computed start (16-59 PST). The claim script could not
resolve the app — `engineering` had no `app.json`. (Gotcha surfaced: the
claim/publish scripts are now plugin-based at
`~/.claude/plugins/cache/wiggleverse-dev-claude-plugin/.../skills/wgl-session-common/scripts/`,
not the old `~/.claude/skills/...` path.)
2. **Read the SPEC/ROADMAP + the whole v0.1 package** to ground the design.
3. **Two operator questions** (AskUserQuestion): (a) how to handle the unregistered
app → *register engineering first*; (b) HTTPS hosting → the operator redirected
to "expect the engineering repo locally and pull from that," so a third focused
question locked the shape → *single file + local self-update*.
4. **Registered engineering**: relocated the worktree under `~/git` so the new
`app.json` was discoverable, wrote it, dry-ran then **claimed session 0001**
(pushed the placeholder to `wiggleverse/session-history`).
5. **Spec-first**: SPEC → `v0.0.2` — §8.3 two obtain-stories over one source of
truth; §8.4 generated-not-forked single file + drift guard; §8.5 bootstrap
subset + self-update; §5.6 the `self-update` verb; §1.3 updated to admit
`self-update` as a mutating verb. ROADMAP → v0.2 shipped.
6. **Build**: `tools/amalgamate.py` (inlines the `devenv` modules **verbatim** via
a `sys.meta_path` finder + embeds the bootstrap subset → `dist/wgl-devenv`);
`devenv/bootstrap.py` (single-file orchestration + runbook resolution: override
→ local clone → cache → embedded); `devenv/selfupdate.py` (`git pull` through
the executor seam); `devenv/__main__.py` (makes `python3 -m devenv` work — a
latent v0.1 README/bug gap); README + pyproject + .gitignore (track only
`dist/wgl-devenv`).
7. **Tests**: +16 (amalgamation drift/round-trip, runbook resolution, self-update
via `FakeExecutor`) → **48 green**; `subprocess` still only in `executor.py`.
Smoke-tested the single file copied to `/tmp`: `doctor` 2/2 PASS,
`run git-ssh --dry-run`, `self-update` fail-loud remediation. (One real-git
end-to-end smoke test of `self-update` was denied by the sandbox; covered
instead by the FakeExecutor unit tests + the proven SubprocessExecutor path.)
8. **Push + PR #7** (SSH-only, push-before-review). Created via the Gitea API
helper (this is Gitea, not GitHub).
9. **Finalize (this wrap-up).** `main` had advanced — PR #6 ("retire the per-app
operator-cli repo role") merged while this work was in flight. Checked: it
touched only `README.md`; the schema `contains` enum still has `operator-cli`,
so the `app.json` tag stayed valid. Gitea recomputed `mergeable` → True.
**Merged PR #7** (merge commit, delete branch), cleaned up the worktree + local
branch, updated memory.
## Cut state (end of session)
| Commit | Where | What |
|---|---|---|
| `6619c3b` | merged via #7 | Register engineering as an app (`app.json`) |
| `e4c06c6` | merged via #7 | dev-env v0.2: the single-file HTTPS bootstrap |
| `9ae325d` | `origin/main` | Merge commit for PR #7 |
- **PR #7 merged**, branch `dev-env-v0.2-https-bootstrap` deleted (remote + local),
worktree `engineering-v0.2` removed.
- `main` is at `9ae325d`; v0.2 artifacts present (`dev-env/dist/wgl-devenv`,
`dev-env/tools/amalgamate.py`, `devenv/bootstrap.py`, `devenv/selfupdate.py`,
`app.json`).
- The concurrent `slice3-provision-vm-scaffold-gitea` checkout was left untouched.
- 48 tests green at merge.
## What lands on the operator's plate
- **Nothing blocking.** v0.2 is merged.
- **Hosting is a deliberate ops detail (not wired):** `dist/wgl-devenv` is on
`main`, but no public HTTPS URL is published yet. To actually hand a bare laptop
the `curl -fsSL <url>/wgl-devenv` line, decide where a readable mirror exposes
the file (a readable Gitea raw/ZIP URL, or a public mirror) and confirm that URL
serves it.
- **Deferred follow-up (flagged as a task chip):** the `engineering` repo root has
no `CLAUDE.md` importing `@~/.claude/wiggleverse.md` (the always-on org-context
wiring). Left out to keep PR #7 focused; worth a tiny separate PR.
## Prompt the operator can paste into the next session
```
Open dev-env v0.3 — the cloud + credentials runbooks. Run
/wgl-coding-session-init first (engineering is now a registered app — it'll claim
engineering/0002).
The dev-env CLI lives at engineering/dev-env/ on main (v0.1 + v0.2 shipped). Read
dev-env/SPEC.md (esp. §6.3 the hard-secrets rule, §2.3 `fix manual`) and
dev-env/ROADMAP.md (v0.3); see memory [[project_dev_env_cli]].
Goal: author two new runbooks — gcloud/ADC (the dedicated-profile-per-deployment
awareness, guide §8.4) and the Keychain Gitea-token runbook — both as `fix manual`
for the secret gestures (no secret bytes ever auto-run; the §5.5 lint enforces
it). The engine already supports them; this slice is runbook content + harvesting
the exact checks. Wire them into the `requires` DAG after git-ssh.
The single-file bootstrap subset stays base-tools + git-ssh; v0.3 runbooks are
full-set-only (fetched via self-update), so you only rebuild dist/wgl-devenv if you
change an embedded module or embedded runbook (a drift test enforces it). Keep the
suite green. Spec-first only if you touch invariants. Branch off main → PR (push
before review; SSH-only git). Use an isolated worktree (the slice3 session may
still hold the shared checkout).
```
@@ -1,20 +0,0 @@
# Session 0001.0 — Transcript
> App: engineering
> Start: 2026-06-03T16-59 (PST)
> Status: **PLACEHOLDER — claimed at session start; finalized at session end.**
>
> This file reserves session ID 0001 for engineering. The driver replaces this
> body with the full transcript and renames the file to its final
> SESSION-0001.0-TRANSCRIPT-2026-06-03T16-59--<end>.md form at session end.
## Launch prompt
```
Start dev-env v0.2 — the single-file HTTPS bootstrap.
Build v0.2 of the dev-env CLI (engineering/dev-env/; v0.1 on main). Goal (SPEC §8.3): resolve the chicken-and-egg — the tool sets up git/SSH but a brand-new laptop has neither. Deliver a single, self-contained stdlib Python file an engineer can fetch over HTTPS and run with zero install on stock macOS python3 >= 3.9. That one file must run doctor and the git-ssh runbook; once SSH works, --self-update re-obtains the full runbook set over SSH (the sanctioned HTTPS-then-SSH carve-out).
Constraints: don't regress v0.1 (package layout + 32-test suite green; single-file generated from the devenv package via an amalgamate build step, not a hand fork). Hold every v1 invariant: pure stdlib, ShellExecutor DI seam, hard-secrets-rule lint, PASS/WARN/FAIL/SKIP, idempotency. Bump SPEC to v0.0.2 recording the bootstrap decision; move v0.2 to shipped in ROADMAP. Spec-first, then build; branch off main -> PR (push before review; SSH-only). Isolated worktree (concurrent session holds engineering on slice3-*). Open question: where the HTTPS-fetchable file is hosted.
```