P0: authorize external human Auto-Dig lifecycle clients without collapsing gateway identity #50
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
priority:P1
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/quasar#50
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?
Consumer:
lost-rob0t/starintel-bixby#7Related lifecycle owner: #41
Gateway consumer:
starintel-labs/starintel-infra#72Canonical OAuth owner:
lost-rob0t/starintel-server#111Post-merge discovery
Quasar #43 merged the durable
autodig.status,autodig.run.get,autodig.run.list,autodig.run.start,autodig.run.pause,autodig.run.resume, andautodig.run.stophandlers onto currentmain.However the WebSocket authorization boundary still has no session profile suitable for an external human client:
+default-capabilities+does not include anyautodig.*lifecycle commands;register-autodig-worker-sessionintentionally grants only status/get/list plus worker claim/heartbeat/complete/fail and explicitly excludes start/pause/resume/stop;security.forbidden.Goal
Add the smallest canonical Quasar authorization/delegation seam that lets a trusted external service such as
starintel-bixby-gatewayact for an authenticated StarIntel human principal without turning the gateway service identity into the user identity.The design must consume StarIntel's existing OAuth/human-principal authority from
starintel-server#111; Quasar must not invent a second OAuth token format, user DB, or scope model.Required authority properties
runIdalone never grants access;system.capabilitiesmust truthfully expose only the commands granted to the authenticated/delegated user session.ADADR design questions
Research/analyze before production code:
TDD/security gate
Tests first must prove:
Non-goals
Exit
An external gateway can translate its frozen client contract into canonical
quasar.control.v1lifecycle commands while Quasar still observes/enforces the real delegated human authority and per-user run isolation.RAGE/TDD checkpoint:
aa33622089b7a09745ec41f049c3e03ec3280cd1; lifecycle handlers are no longer the blocker.539aeda30ba2194b137c6f68541cdce7c5884e39produced observed RED in CI #823 exactly because delegated Auto-Dig user-session registration did not exist, while existing lifecycle/reclaim suites stayed green.63d2867f9cb7fcab996c1df9cc89217cc7737fc5then passed exact-head CI #825 end-to-end, including Common Lisp control-plane tests, real quasar-web load, dev-stack smoke, Playwright real-stack paths, and packaged production smoke.30a55edde78e3c73ca41d33c0a35548d49e480cbnow specifies same-workspace cross-user run isolation and server-side principal provenance. It requires two StarIntel humans to reuse the same visible request ID independently, denies get/control of another user's run asautodig.run-not-found, filters list/status per principal, and proves a client-suppliedmetadata.principalcannot spoof the trusted principal. CI #829 is currently running; no production principal-isolation implementation will be added until that RED is observed.Design direction remains generic Quasar authority: trusted principal/authority context must be injected server-side into the control-plane actor path, never read from client JSON. Worker authority remains separate.
RAGE continuation: delegated Auto-Dig user authority + principal isolation merged via PR #51 at
3acef088009137a737647b79c404dde615b96c1dafter exact-head CI #837 passed and no review threads remained. Post-merge transport audit found one remaining owner-boundary gap: the live WebSocket handler still invokessubmit-commandwithout propagating the authenticated connection principal/authority kind, so direct isolation tests do not yet prove live delegated-client isolation. That gap is now tracked in #52 with tests-first PR #53 at5c75b970eccab37a4075b3f07b585f83dcb0e949; CI is running and production code remains untouched until observed RED. Gateway Auto-Dig stays fail-closed until #52 is green and the trusted StarIntel credential/session-registration adapter is wired.