devcontainer: settle whether Claude OAuth refresh rotates single-use — one credential copied into N parallel containers #259
Labels
No labels
component:adapters
component:lifecycle
component:qa
component:setup
component:shared
component:worktrees
phase/accepted
phase/backlog
phase/deployed
phase/developing
phase/integrating
phase/planning
phase/qa
phase/requirements
phase/uat
priority:critical
priority:critical
priority:high
priority:high
priority:low
priority:low
priority:medium
priority:medium
type:bug
type:chore
type:docs
type:feature
type:infra
type:tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jbr870/devwork-skills#259
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Spawned from finding
F-PO-61-3-1(in-scope-deferrable, severity high) on issue #61 during decisionD-PO-61-3-1.Original scope note: Run 5 lost seven criteria to
Failed to authenticate: OAuth session expired and could not be refreshedinside containers, while the host credential remained valid. Run 6 then passed 23/23 with 240 credential samples showing no rotation at all — but the access token was ~7h50m from expiry throughout, so no container ever needed to refresh. Run 6 therefore avoided the rotation path rather than clearing it.What is established: ~28 containers holding copies of a valid credential work concurrently, which was never in doubt.
What is not established: what happens when the token expires with N copies live — precisely run 5's scenario, and precisely what
D-PO-61-2-3's waiver deferred. That waiver's own tripwire reads: revisit BEFORE relying on unattended parallel runs. Unattended parallel operation is #61's stated purpose, so this is the gap between the feature shipping and the feature delivering.Disposition rationale: Settling it needs a deliberate experiment, not a code change: bring a credential close to expiry, run several containers holding copies, and observe whether one container's refresh invalidates its siblings (single-use refresh-token rotation) or leaves them working. Bounded work with a clear result, but not #61's build.
What the answer decides:
F#9/D-PO-61-2-4on #61.Mitigation available today (attended use only): the failure is loud, and
dw.sh refresh-creds <N>recovers a container in one command. That is not a mitigation for unattended runs, where the same failure is silent until the run is found dead.This issue was deferred out of the parent feature's scope; it carries no PREQ yet. Run
/dev:requirements --issue={this}to flesh it out before planning.