update dev-claude-plugin/0071/SESSION-0071.0-TRANSCRIPT-2026-06-12T00-21--INPROGRESS.md
This commit is contained in:
@@ -13,7 +13,53 @@
|
||||
|
||||
## Launch prompt
|
||||
|
||||
_(launch prompt not captured at claim time)_
|
||||
`/goal next` → resumed from memory: plan-and-execute **SLICE-2** of the
|
||||
design-handoff spec (storage + unpack/normalize + commit → home step) in the
|
||||
plugin repo; depends on SLICE-1 (shipped). Write the JIT plan at session start.
|
||||
|
||||
## Plan
|
||||
|
||||
> Anchor: design `wiggleverse-dev-claude-plugin-content/specs/2026-06-11-design-handoff-design.md` (v1.0.0, graduated) · R2a-ELIGIBLE
|
||||
> Anchors-issues: #95 (storage/linkage), #93 (spec field) · this slice = SLICE-2 (home step), PUC-1
|
||||
> Worktree: `.claude/worktrees/session-0071-design-handoff-slice2` (concurrent same-app sessions in flight → isolated per §5.4)
|
||||
|
||||
**SLICE-2 — Storage + unpack/normalize + commit → home step** (spec §7.2)
|
||||
|
||||
Deliver a deterministic verb that homes a Claude Design export zip into the
|
||||
app's `*-content` repo under `ui/designs/<ticket>-<slug>/`, honoring the spec's
|
||||
invariants. SLICE-2 stays **offline** — the Gitea issue-title slug lookup is
|
||||
SLICE-4's orchestrator job; this script takes an explicit `--slug` and falls
|
||||
back to the bundle top-dir name.
|
||||
|
||||
- **New script:** `skills/wgl-design-handoff/scripts/home-design-bundle.sh`
|
||||
- Args: `--zip PATH` (req), `--ticket N` (req), `--slug SLUG` (opt),
|
||||
`--repo DIR`, `--content-remote URL` (test override), `--subdir PATH`,
|
||||
`--dry-run`.
|
||||
- INV-1: home dir keyed by **ticket number** (verb arg), never the zip name.
|
||||
- Normalize both export shapes: single common top-level dir → strip it;
|
||||
rootless → contents land directly. Drop `__MACOSX/` + `.DS_Store` noise.
|
||||
- `_ds/` snapshot **kept** embedded (D1) — whole normalized tree is copied.
|
||||
- INV-2: idempotent wholesale replace — `git rm -rf ui/designs/<ticket>-*`
|
||||
(any prior slug for that ticket) then place; identical content → no-op.
|
||||
- Slug: explicit `--slug`, else slugified bundle top-dir name; rootless +
|
||||
no slug → fail asking for `--slug`. Slugify = lowercase, non-alnum→dash.
|
||||
- Resolve content repo via `resolve-app.py` (assign-then-eval guard, #40);
|
||||
unpack to a temp dir first, clone + commit + push **only after** a clean
|
||||
unpack (non-destructive on failure).
|
||||
- Push with the push-robustness classify-and-retry loop (issue #46), mirrored
|
||||
from `publish-transcript.sh`.
|
||||
- **New test:** `skills/wgl-design-handoff/scripts/test-home-design-bundle.sh`
|
||||
— hermetic (local bare repo as `*-content` remote via `--content-remote`):
|
||||
handoff-shaped zip (single root), rootless zip, re-handoff wholesale replace,
|
||||
slug derivation (explicit + top-dir fallback + slug drift), `__MACOSX` strip,
|
||||
dry-run no-push, missing-content fail. `ok`/`bad` counters, non-zero on fail.
|
||||
- **Lint:** `scripts/lint.sh` shellcheck baseline green for the new scripts.
|
||||
- **Version bump:** `plugin.json` 0.52.0 → 0.53.0 (a plugin slice ships a script).
|
||||
- **No E2E/PPE** — no runtime surface (spec §7.3); DoD = tests + lint green,
|
||||
merged to `main`, version bumped.
|
||||
|
||||
**Build order (TDD):** write the test harness asserting the DoD behaviors →
|
||||
write the script → green → lint → bump → PR → merge.
|
||||
|
||||
## Deferred decisions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user