From cea13fa0735c947424c9224b07f2ab1d9e787d75 Mon Sep 17 00:00:00 2001 From: zeekay Date: Sun, 26 Jul 2026 01:04:49 -0700 Subject: [PATCH] docs: record the v1.12.9 HTTP list route CLAUDE.md is a symlink to LLM.md, so the edit goes to the real file. --- LLM.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/LLM.md b/LLM.md index 1e81cdb7c..0520166c9 100644 --- a/LLM.md +++ b/LLM.md @@ -3,6 +3,26 @@ **Project**: Lux Key Management Service (KMS) **Organization**: Lux Network +## v1.12.9 — HTTP secret list (surface parity with ZAP) + +The ZAP wire has carried `OpSecretList` (0x0042, `{path, env}` -> `{names}`) +since it was written; HTTP had get/put/delete and **no list**, so the two +framings of the same store disagreed about what you could ask it. A client that +wanted to enumerate had to open a ZAP connection or give up — the hanzo browser +extension gave up and pinned itself to Infisical `/api/v3` paths instead. + + GET /v1/kms/orgs/{org}/secrets?path=&env= -> {"names": [...]} + +Same envelope the ZAP op returns. The pattern has no trailing segment, so +ServeMux routes the bare collection there and anything below it to the existing +`{rest...}` handler. That split is the whole risk: invert it and list swallows +every get, or get 400s on the bare collection for want of a slash. +`TestSecretRoutes_ListAndGetDoNotShadow` asserts both directions, and that an +empty result is `[]` not `null`. + +The full HTTP secret surface is now get / list / put / delete — orthogonal to +the ZAP ops 0x0040-0x0043, one store behind both. + ## v1.12.5 — deleted the env-var fetch route (secrets are never process env) - **Hole (HIGH, CRITICAL on live `lux-kms-go`):** `GET /v1/kms/secrets/{name}` was