BREAKING feat/land-phase-c-rest-agent-creds #1 / 1
aaronrene · 39 days ago · Jul 28, 2026 · Diff

merge: land DURABLE-AGENT-AUTH-C (scoped REST agent credentials)

Merge feat/durable-agent-auth-phase-c onto current main for Trend Agent. kt_agent_ mint/list/revoke/rotate + agent_access JWT exchange; Hub UI; Netlify store; docs/OpenAPI. Resolve ROADMAP/HANDOVER conflicts keeping main board structure; mark Phase C DONE/landed. Keep SEC-KN-3/SEAM return shapes exact; classify agent_access at approve call site. Seven-tier agent-credentials 22/22; SEC scanners 75/75.

sha256:42919023ffff77574949050319e777825cb77022c4770f9ca88e5f1482f9a150 sha
+109 ~73 −3 symbols
sha256:4040c77afa59f1985c0162122fc231c2d13aaf384cc4d77d77464d3c1f6defe0 snapshot
+109
symbols added
~73
symbols modified
−3
symbols removed
0
dead code introduced
Semantic Changes 185 symbols
+ Durable Agent Auth Phase C — frozen spec: scoped REST agent credentials section Durable Agent Auth Phase C — frozen spec: scoped REST agent credentials L1–479
+ Plain-language summary section 1. Plain-language summary L53–65
+ Technical summary section Technical summary L59–65
+ Docs amendments (same PR as Auto) section 10. Docs amendments (same PR as Auto) L391–405
+ table section table L393–400
+ Test matrix (seven tiers — Aaron standard) section 11. Test matrix (seven tiers — Aaron standard) L405–421
+ table section table L407–416
+ Fail-closed rules (checklist) section 12. Fail-closed rules (checklist) L421–436
+ Implementation map (Auto; no redesign) section 13. Implementation map (Auto; no redesign) L436–451
+ table section table L438–448
+ Tier-3 gates (do not execute in Auto) section 14. Tier-3 gates (do not execute in Auto) L451–459
+ Review record section 15. Review record L459–468
+ table section table L461–465
+ Definition of Done (Phase C Auto) — after this freeze passes review section 16. Definition of Done (Phase C Auto) — after this freeze passes review L468–479
+ Ground truth — what the code does today (file+line) section 2. Ground truth — what the code does today (file+line) L65–94
+ table section table L71–89
+ Incident diagnosis — why the trend-agent path dies section 3. Incident diagnosis — why the trend-agent path dies L94–126
+ 1 Error classes (server) class section 3.1 Error classes (server) L96–105
+ table section table L98–104
+ 2 Why Phase A/B cannot fix this consumer section 3.2 Why Phase A/B cannot fix this consumer L105–112
+ 3 Reliability follow-on (server) — in scope for diagnosis, Tier-3 for prod flip section 3.3 Reliability follow-on (server) — in scope for diagnosis, Tier-3 for prod flip L112–126
+ table section table L116–121
+ Frozen product goal section 4. Frozen product goal L126–140
+ Token shape (frozen) section 5. Token shape (frozen) L140–185
+ 1 Opaque agent credential (long-lived secret) section 5.1 Opaque agent credential (long-lived secret) L142–158
+ table section table L144–154
+ 2 Access JWT (short-lived) section 5.2 Access JWT (short-lived) L158–176
+ table section table L162–173
+ 3 Explicit non-goals for token shape section 5.3 Explicit non-goals for token shape L176–185
+ Hub APIs (frozen) section 6. Hub APIs (frozen) L185–292
+ 1 Mint — POST api/v1/auth/agent/credentials section 6.1 Mint — POST api/v1/auth/agent/credentials L189–240
+ code[json]@L195 variable variable code[json]@L195 L195–203
+ code[json]@L224 variable variable code[json]@L224 L224–235
+ table@L204 section table@L204 L204–210
+ table@L213 section table@L213 L213–219
+ 2 Exchange — POST api/v1/auth/agent/token section 6.2 Exchange — POST api/v1/auth/agent/token L240–264
+ code[json] variable variable code[json] L246–255
+ 3 List — GET api/v1/auth/agent/credentials section 6.3 List — GET api/v1/auth/agent/credentials L264–270
+ 4 Revoke — DELETE api/v1/auth/agent/credentials/:id section 6.4 Revoke — DELETE api/v1/auth/agent/credentials/:id L270–276
+ 5 Rotate — POST api/v1/auth/agent/credentials/:id/rotate section 6.5 Rotate — POST api/v1/auth/agent/credentials/:id/rotate L276–280
+ 6 Store section 6.6 Store L280–292
+ table section table L282–289
+ REST acceptance + scope enforcement (frozen) section 7. REST acceptance + scope enforcement (frozen) L292–350
+ 1 getUserId / authz extensions section 7.1 getUserId / authz extensions L294–307
+ 2 agentScopesPermitMethod(scopes, method, path) method section 7.2 agentScopesPermitMethod(scopes, method, path) L307–316
+ 1 Mint scope defaults section 7.2.1 Mint scope defaults L316–320
+ 3 Propose-create path allowlist (Phase C) section 7.3 Propose-create path allowlist (Phase C) L320–334
+ 4 Vault binding section 7.4 Vault binding L334–340
+ 5 Self-apply / SEC-KN-3 section 7.5 Self-apply / SEC-KN-3 L340–344
+ 6 MCP optional bridge section 7.6 MCP optional bridge L344–350
+ Hub UI (frozen) section 8. Hub UI (frozen) L350–372
+ code[text] variable variable code[text] L359–364
+ Primary consumer contract — VideoFactory-trend-agent (follow-on) section 9. Primary consumer contract — VideoFactory-trend-agent (follow-on) L372–391
+ table section table L376–386
+ Freeze-contract declaration section Freeze-contract declaration L13–53
+ code[yaml] variable variable code[yaml] L15–46
+ allowExchange function function allowExchange L34–43
+ createAgentCredentialRouter function function createAgentCredentialRouter L55–251
+ requireHumanSession function function requireHumanSession L80–95
+ createAgentCredentialStore function function createAgentCredentialStore L92–139
+ credentialFilePath function function credentialFilePath L29–32
+ getBlobStore function function getBlobStore L34–36
+ load function async_function load L52–65
+ normalizeRecords function function normalizeRecords L38–50
+ save function async_function save L67–81
~ hub/lib/agent-credential-core.mjs .mjs 16 symbols added
+ agentScopesPermitMethod method function agentScopesPermitMethod L378–389
+ applyScopeCeiling function function applyScopeCeiling L106–124
+ assertAgentVaultAllowed function function assertAgentVaultAllowed L396–402
+ cloneRecords function function cloneRecords L159–173
+ countActiveForSub function function countActiveForSub L181–187
+ hashSecret function function hashSecret L39–41
+ listCredentialsForSub function function listCredentialsForSub L334–351
+ mintCredential function function mintCredential L200–243
+ normalizeAgentRequestPath function function normalizeAgentRequestPath L358–364
+ normalizeScopes function function normalizeScopes L75–99
+ normalizeVaultIds function function normalizeVaultIds L130–153
+ parseAgentCredential function function parseAgentCredential L60–69
+ revokeCredential function function revokeCredential L290–300
+ rotateCredential function function rotateCredential L308–328
+ safeEqualHashes function function safeEqualHashes L48–54
+ verifyCredential function function verifyCredential L250–282
+ sessionJwt function function sessionJwt L34–36
+ withTempStore function async_function withTempStore L21–32
~ .claude/skills/governance-sync/SKILL.md .md 2 symbols added, 2 symbols modified
+ Multi-repo (when workspace: configured) section Multi-repo (when workspace: configured) L46–58
+ code[bash] variable variable code[bash] L51–54
~ .cursor/skills/governance-sync/SKILL.md .md 2 symbols added, 2 symbols modified
+ Multi-repo (when workspace: configured) section Multi-repo (when workspace: configured) L46–58
+ code[bash] variable variable code[bash] L51–54
~ docs/OVERSEER-HANDOVER.md .md 4 symbols added, 3 symbols removed, 15 symbols modified
2 P1 WASM + T1 (PRIMARY relay → Scooling board) section NEXT SESSION — §FCA.2 P1 WASM + T1 (PRIMARY relay → Scooling board) L20–192
THE ONE NEXT STEP — Model: Operator (Scooling board owns product order) section THE ONE NEXT STEP — Model: Operator (Scooling board owns product order) L34–50
code[text] variable variable code[text] L36–49
+ NEXT SESSION — Trend Agent: use Phase C REST credentials (PRIMARY for this track) section NEXT SESSION — Trend Agent: use Phase C REST credentials (PRIMARY for this track) L20–203
+ Prior session — DURABLE-AGENT-AUTH-C land to Muse main (2026-07-28) section Prior session — DURABLE-AGENT-AUTH-C land to Muse main (2026-07-28) L51–61
+ THE ONE NEXT STEP — Model: Operator + Auto (Trend Agent) section THE ONE NEXT STEP — Model: Operator + Auto (Trend Agent) L35–51
+ code[text] variable variable code[text] L37–50
~ docs/ROADMAP.md .md 3 symbols modified
~ hub/gateway/access-token-authz.mjs .mjs 2 symbols added, 4 symbols modified
+ assertAgentVaultAllowed function function assertAgentVaultAllowed L189–194
+ isAgentAccessPayload function function isAgentAccessPayload L42–44
~ hub/gateway/server.mjs .mjs 1 symbol added, 4 symbols modified
~ netlify/functions/gateway.mjs .mjs 1 symbol modified
~ web/hub/hub.js .js 7 symbols added, 1 symbol modified
+ agentCredAuthHeaders function function agentCredAuthHeaders L5370–5377
+ formatAgentCredTs function function formatAgentCredTs L5379–5386
+ refreshAgentCredList function async_function refreshAgentCredList L5443–5547
+ refreshAgentCredVaultSelect function function refreshAgentCredVaultSelect L5389–5426
+ selectedAgentCredVaultIds function function selectedAgentCredVaultIds L5428–5434
+ setAgentCredMsg function function setAgentCredMsg L5363–5368
+ syncAgentCredWriteWarn function function syncAgentCredWriteWarn L5436–5441
~ web/hub/index.html .html 8 symbols added, 30 symbols modified
+ button#btn-agent-cred-mint section button#btn-agent-cred-mint L1392–1392
+ button#btn-agent-cred-refresh section button#btn-agent-cred-refresh L1393–1393
+ h3#agent-credentials-heading section h3#agent-credentials-heading L1379–1382
+ p#agent-cred-msg section p#agent-cred-msg L1396–1396
+ p#agent-cred-write-warn section p#agent-cred-write-warn L1395–1395
+ pre#agent-cred-once section pre#agent-cred-once L1397–1397
+ select#agent-cred-vault-select section select#agent-cred-vault-select L1388–1388
+ ul#agent-cred-list section ul#agent-cred-list L1398–1398
← Older Oldest on feat/land-phase-c-rest-agent-creds
All commits
Newer → Latest on feat/land-phase-c-rest-agent-creds

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:42919023ffff77574949050319e777825cb77022c4770f9ca88e5f1482f9a150 --body "your comment"