72 lines
4.0 KiB
Markdown
72 lines
4.0 KiB
Markdown
# Session 0072.0 — Transcript
|
|
|
|
> App: dev-claude-plugin
|
|
> Start: 2026-06-12T00-43 (PST)
|
|
> Type: planning-and-executing
|
|
> Posture: yolo
|
|
> Claude-Session: 4700fcbd-7278-47c8-adeb-b84b6adf8160
|
|
> Status: **PLACEHOLDER — claimed at session start; finalized at session end.**
|
|
>
|
|
> This file reserves session ID 0072 for dev-claude-plugin. The driver replaces this
|
|
> body with the full transcript and renames the file to its final
|
|
> SESSION-0072.0-TRANSCRIPT-2026-06-12T00-43--<end>.md form at session end.
|
|
|
|
## Launch prompt
|
|
|
|
```
|
|
Plan-and-execute SLICE-3 of the design-handoff spec (content repo specs/2026-06-09-...-design.md; plugin issue #95/#93 family).
|
|
|
|
SLICE-3: idempotent gitea-api.sh issue-body upsert of a **Designs:** linkage line on the ticket issue body — so a homed design bundle (SLICE-2, home-design-bundle.sh) links back from its Gitea ticket. No deploy dependency; offline fixture-tested, modeling the test on session 0071's test-home-design-bundle.sh.
|
|
|
|
Resumed via /goal next from the memory Next-/goal field recorded at session 0071 finalize.
|
|
|
|
```
|
|
|
|
## Plan
|
|
|
|
> Anchor: design `specs/2026-06-11-design-handoff-design.md` (v1.0.0, graduated) · §7.2 SLICE-3
|
|
> Anchor issues: #95 (storage/linkage — link step), #93 (spec field) · Eligibility: R2a (graduated Solution Design) — eligible, no override
|
|
> Worktree: `.claude/worktrees/session-0072-design-handoff-slice3` (branch `worktree-session-0072-design-handoff-slice3`) — isolated; ≥1 concurrent --INPROGRESS placeholder in flight
|
|
|
|
SLICE-3 — the **link step** of `wgl-design-handoff` (PUC-1, PP-3): an idempotent
|
|
issue-body-upsert that writes a canonical `**Designs:** <path>` pointer line into
|
|
the tracking Gitea issue, so a homed bundle (SLICE-2) is discoverable from its
|
|
ticket. Independent of SLICE-2/SLICE-4. Offline + fixture-tested (§6.8).
|
|
|
|
Deliverables (bottom-up, TDD):
|
|
|
|
1. **`gitea-api.sh` extension** (§6.2/§6.4 — helper lives *in* gitea-api.sh):
|
|
- `upsert-body-line --label L --value V` — **PURE** transform: reads a body on
|
|
stdin, emits the body with the labelled line inserted/replaced/deduped on
|
|
stdout. No token, no network — the testable core carrying all INV-2 logic.
|
|
- `issue-body-upsert [--token-service S] <host> <repo> <issue> --label L --value V [--dry-run]`
|
|
— network glue: GET issue body → run the pure transform → **no-op if
|
|
unchanged**, else PATCH `{body}`. Idempotency decision = `new == old`.
|
|
- Legacy `<host> <METHOD> <path>` passthrough untouched (30+ callers).
|
|
2. **Thin caller** `skills/wgl-design-handoff/scripts/link-design-issue.sh`
|
|
(modelled on `set-patchwatch-status.sh`): `--issue N --design PATH [--repo o/n]
|
|
[--host h] [--dir D] [--dry-run]`; resolves repo/host from git origin; token
|
|
`WGL_DESIGN_HANDOFF_TOKEN_SERVICE` (default `wgl-gitea-issues-readwrite-token`,
|
|
INV-5); hardcodes label `**Designs:**`; delegates to `issue-body-upsert`.
|
|
3. **Test** `test-design-issue-link.sh` (offline, hermetic):
|
|
A. pure transform vs fixture bodies — insert / replace / no-op-identical /
|
|
dedup-multiple / empty-body / preserve-other-lines / path with slashes.
|
|
B. thin caller vs stubbed `CLAUDE_PLUGIN_ROOT`/fake `gitea-api.sh` (test-typecheck
|
|
pattern) — correct delegation (label/issue/value), git-origin repo
|
|
resolution, --dry-run, usage errors.
|
|
C. `issue-body-upsert` integration vs fake `curl`+`security` on PATH — GET
|
|
fixture body → PATCH-when-changed, **no PATCH when unchanged** (INV-2 at the
|
|
API layer).
|
|
4. **Docs + ship:** TOKENS.md `WGL_DESIGN_HANDOFF_TOKEN_SERVICE` row; bump
|
|
`plugin.json` 0.53.0 → 0.54.0; `scripts/lint.sh --check-bump`; PR; merge.
|
|
|
|
Pipeline (§9): no deployable runtime surface (plugin scripts only) → DoD = unit
|
|
tests + lint green, merged to `main`, version bumped. Live next session after
|
|
re-install (`update-plugin.sh` at finalize).
|
|
|
|
## Deferred decisions
|
|
|
|
_Autonomous-mode low-confidence calls the driver made and would have
|
|
liked operator input on. Appended as the session runs; surfaced at
|
|
finalize. Empty if none._
|