From c49676d492f69e2186cc7ccc1cbc3d4a69a2a192 Mon Sep 17 00:00:00 2001 From: Ben Stull Date: Sun, 7 Jun 2026 10:14:51 -0700 Subject: [PATCH] update dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md --- ...TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md b/dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md index 1e5628c..3bfcad2 100644 --- a/dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md +++ b/dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md @@ -19,8 +19,78 @@ the spec → executing-plans. Ship 0.19.0. ``` +## Plan + +**Goal:** Implement SP1 — feedback as Gitea issues — per the approved design +`docs/superpowers/specs/2026-06-07-feedback-as-gitea-issues-design.md`, on branch +`feat/feedback-as-gitea-issues`. Ship 0.19.0. + +Move plugin feedback OUT of the in-repo `feedback/` file corpus INTO Gitea issues +on `wiggleverse/wiggleverse-dev-claude-plugin`: + +1. **Label model** — `ensure-feedback-labels.sh` creates canonical labels + idempotently (`triaged:accepted`, `resolution:done|declined|duplicate`, + `type:bug|friction|enhancement|idea`, `severity:low|medium|high`). +2. **Scripts as thin `gitea-api.sh` wrappers** — `file-feedback.sh` (replaces + `record-feedback.sh`), rewritten `list-feedback.sh`, rewritten + `set-feedback-status.sh`. +3. **Skill rewrites** — `wgl-dev-plugin-feedback` (capture) files an issue; + `wgl-dev-plugin-review-feedback` (review) points at issues + label model + (direct triage-and-fix kept for SP1; SP2 note). +4. **Migration** — 4 existing `new` notes → issues; delete note files; repurpose + `feedback/README.md` for the issue-based corpus. +5. **New SessionStart hook** `hooks/feedback-notice` — plugin-repo-only, fail-open, + counts open issues, nudges `/goal feedback`. +6. **Housekeeping** — `plugin.json` 0.18.0→0.19.0; CLAUDE.md hooks inventory 3→4 + + feedback-in-issues note. + +Process: `writing-plans` from the design → `executing-plans`. SP2 (`/goal feedback` +orchestrator) is deferred. + +## Progress checkpoint (2026-06-07, blocked on token scope) + +Plan written + committed (`docs/superpowers/plans/2026-06-07-feedback-as-gitea-issues.md`). +**8 of 11 tasks done and pushed** on `feat/feedback-as-gitea-issues` (10 commits ahead +of main, all offline-verified `bash -n` / dry-run / fail-open): + +- ✅ T1 `ensure-feedback-labels.sh` · ✅ T2 `file-feedback.sh` (replaces `record-feedback.sh`) + · ✅ T3 `list-feedback.sh` rewrite · ✅ T4 `set-feedback-status.sh` rewrite +- ✅ T5 `hooks/feedback-notice` + `hooks.json` (fail-open verified) · ✅ T6 capture skill + · ✅ T7 review skill · ✅ T8 `feedback/README.md` repurposed · ✅ T10 `plugin.json`→0.19.0 + CLAUDE.md hooks 3→4 +- ⛔ T9 live migration (create 11 labels, scratch-issue lifecycle test, file 4 issues, delete 4 note files) + and T11 ship 0.19.0 — **BLOCKED**. + +**Blocker:** every `/issues` + `/labels` API call returns **403**. The Keychain token +`wgl-gitea-token-git.wiggleverse.org` (and legacy `ohm-gitea-token`) has repo perms but +**not the `issue` OAuth scope**. The design's feasibility check read the repo *permission* +object, which does not imply token scope. Scripts/hook thread an issue-scoped token via +`gitea-api.sh --token-service`, default service `wgl-gitea-issues-readwrite-token` +(env `WGL_FEEDBACK_TOKEN_SERVICE`). Operator said they added that Keychain entry, but it is +**not resolvable** via `security find-generic-password -s wgl-gitea-issues-readwrite-token` +in either login or System keychain (likely added to a non-search-list keychain, e.g. iCloud, +or the add errored). **Resume:** operator adds it to the login keychain +(`security add-generic-password -U -a "$USER" -s wgl-gitea-issues-readwrite-token -w`), then +run T9 (migration) → T11 (ship). All offline code is final and pushed. + ## 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._ + +- **Token-scope gap vs. the approved design.** The design declared SP1 feasibility + "verified live" on the repo `permissions:{admin,push,pull}` object — but that is the + user's role on the repo, not the token's OAuth scopes. The issue/label endpoints need + the `issue` scope, which the resolved token lacks (403). Handled by introducing a + dedicated issue-scoped Keychain entry selected via `--token-service` + (`WGL_FEEDBACK_TOKEN_SERVICE`), keeping git transport / gitea-admin on their own token. + This is a correctness deviation from the design's single-token assumption; logged here + and documented in the plan. *(A good candidate to file as a feedback ISSUE once the + flow is live — the design's feasibility-check method missed token scope.)* +- **Review status edits ride the API, not the PR.** The design said review status edits + "ride in the same branch→PR." With issues (not tree files) the label/comment/close + happen immediately via the API; only the code change rides the PR. Documented honestly + in the rewritten review skill + `feedback/README.md`. +- **Script `gitea-api.sh` resolution.** Scripts resolve `gitea-api.sh` relative to their + own dir with a `${CLAUDE_PLUGIN_ROOT}` fallback (vs. the design's bare + `${CLAUDE_PLUGIN_ROOT}/…`), so they run from a source checkout where that var is unset.