Skip to content

ci: add a temporary registry-auth debug workflow - #29

Merged
wittjosiah merged 1 commit into
mainfrom
claude/plugin-excalidraw-pr8-cleanup-hb0ebu
Aug 8, 2026
Merged

ci: add a temporary registry-auth debug workflow#29
wittjosiah merged 1 commit into
mainfrom
claude/plugin-excalidraw-pr8-cleanup-hb0ebu

Conversation

@wittjosiah

Copy link
Copy Markdown
Member

Finding first: the release's 401 is not the ATProto secrets. The stack (_handleUnauthorized / fromProcessingFailureCause) is dxos's edge-client, and the failure happens at the bundle upload to the edge registry — which authenticates with a hub-identity verifiable presentation from the client's HALO identity, and the CI client has none. resolveSession (the step that consumes ATPROTO_HANDLE/ATPROTO_APP_PASSWORD) runs after the upload and was never reached — the run log shows the vite build output and then the error, with no Uploaded: line.

This dispatch-only workflow (marked TEMPORARY, delete once publish auth works) separates the two auth domains so each is testable alone:

  • atproto — secret shape (length / whitespace / leading-@ flags, never values), resolveHandle via the public API, PDS resolution via plc.directory, then createSession reporting HTTP status only. 200 = the secrets are valid.
  • edge — for each edge environment (dev / main / production): GET /registry/plugins (unauthenticated read) and an unauthenticated POST /registry/upload, statuses only. Shows which environment the gate lives on and confirms the 401 reproduces without any CLI involved.

Nothing writes anywhere; no secret value can appear in output by construction (and Actions masks them besides).

The real question this tees up: how CI should present a hub identity for the upload. The publish code checks client.halo.identity.get() and uploads unauthenticated when there is none — options are seeding an identity in CI, an edge-side service token, or self-hosted assets (assetBaseUrl) bypassing edge upload entirely. That's an architectural call once the debug run confirms the picture.


Generated by Claude Code

The registry publish 401s at the edge upload, which authenticates with a
hub-identity verifiable presentation — a different auth domain than the ATProto
secrets the failure implicates at first glance. This dispatch-only workflow
tests each domain alone, printing shapes and HTTP status codes and never values,
so the two can be told apart from run output. Delete once publish auth works.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01SZ4ZdaPo9erkh5yF4eXh3Z
@wittjosiah
wittjosiah enabled auto-merge August 8, 2026 22:26
@wittjosiah
wittjosiah added this pull request to the merge queue Aug 8, 2026
Merged via the queue into main with commit fc6107a Aug 8, 2026
3 checks passed
@wittjosiah
wittjosiah deleted the claude/plugin-excalidraw-pr8-cleanup-hb0ebu branch August 8, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants