update dev-claude-plugin/0026/SESSION-0026.0-TRANSCRIPT-2026-06-07T09-50--INPROGRESS.md
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user