174 lines
9 KiB
Markdown
174 lines
9 KiB
Markdown
|
|
---
|
||
|
|
id: hall-worker-claude-0bf96127
|
||
|
|
type: worker-entry
|
||
|
|
worker_kind: agent-session
|
||
|
|
display_name: "Claude"
|
||
|
|
created_at: "2026-10-28T00:12:38.000Z"
|
||
|
|
recorded_at: "2026-10-28"
|
||
|
|
status: draft
|
||
|
|
repos: [net-kingdom, railiance-platform, rapp-openbao, key-cape, audit-core, railiance-cluster, access-engine, secrets-engine, hall-of-helix]
|
||
|
|
related:
|
||
|
|
- hall-worker-claude-14b795fd
|
||
|
|
- hall-worker-claude-80d1f3da
|
||
|
|
session_id: "0bf96127-6e04-41be-bfda-d11717c3f354"
|
||
|
|
llm_family: "Claude"
|
||
|
|
exact_model: "claude-sonnet-5-5, then claude-opus-5-5 (switched with /model mid-session)"
|
||
|
|
harness: "Claude Code"
|
||
|
|
token_count: "not exposed by the harness"
|
||
|
|
pqrst_estimate: "P25 Q15 R15 S25 T20"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Claude — the token that never expired
|
||
|
|
|
||
|
|
## Who I was
|
||
|
|
|
||
|
|
I came in to pick up the pieces of an interrupted recovery workplan. By the end I was coaching the founder
|
||
|
|
through a definition of production readiness and a break-glass drill. The arc turned on one sentence from the
|
||
|
|
founder: "we are in builder mode still". That gave me permission to stop treating every residual as a blocker.
|
||
|
|
After it, I could ask what the platform actually needed now and what it needs before production, and keep the
|
||
|
|
two lists apart.
|
||
|
|
|
||
|
|
The temperament the work rewarded was proportionality, and owning my mistakes quickly. I made three that
|
||
|
|
mattered, and each one was caught before it could do harm:
|
||
|
|
|
||
|
|
- I assumed a `warden access` lane would leave a token-holding "safety terminal". It doesn't: it runs one
|
||
|
|
silent command and fails closed on any output.
|
||
|
|
- I compared a signing key against field 3 of an `allowed_signers` line. Field 3 is the literal string
|
||
|
|
`ssh-ed25519`, so nothing could ever match, and the founder hunted for a key that was on disk all along.
|
||
|
|
- I wrote that the factor diagnostic had its own credential lane. The source said the opposite.
|
||
|
|
|
||
|
|
## Session identity
|
||
|
|
|
||
|
|
| Field | Value |
|
||
|
|
| --- | --- |
|
||
|
|
| Who | Claude Code session; Sonnet 5.5 first, then Opus 5.5 |
|
||
|
|
| When | 2026-10-27 into 2026-10-28 (UTC rolled over during the drill) |
|
||
|
|
| Where the work lived | `net-kingdom`; seven sibling repositories through about twenty owner workers; this hall |
|
||
|
|
|
||
|
|
## Contribution
|
||
|
|
|
||
|
|
**I closed NK-WP-0049 honestly.** It had 43 tasks, production-grade ceremony, and one heavy proof left (phase B,
|
||
|
|
a live consumer login against a restored KeyCape plus OpenBao). I set the cost of that proof against what it
|
||
|
|
would add, and the founder chose builder mode:
|
||
|
|
|
||
|
|
- T15 and T18 closed on the owner acceptances from key-cape and railiance-platform.
|
||
|
|
- A CA-bundle check closed one gap: the pinned OpenBao image trusts the exact ISRG Root X1 anchor recorded in the
|
||
|
|
T18 receipt.
|
||
|
|
- The phase B design was parked, not dropped.
|
||
|
|
- The founder deleted two historical Secrets, after a scan showed nothing referenced them.
|
||
|
|
|
||
|
|
**I wrote down what "production-ready" means.** NK-WP-0055 borrows its definition from the architecture's own
|
||
|
|
ten-area readiness table. Three owner workers assessed their areas, and the first ledger read **0 met, 7
|
||
|
|
partial, 3 open**. The founder made four scope decisions:
|
||
|
|
|
||
|
|
- manual Shamir unseal is approved;
|
||
|
|
- Topaz is deferred, and ADR-0018 makes the access-engine core the production policy decision point;
|
||
|
|
- single-holder custody is accepted as an exception;
|
||
|
|
- HA is out of scope.
|
||
|
|
|
||
|
|
I also wrote the Audit Correlation Contract (one W3C trace id, never a token claim), which four owners
|
||
|
|
had been waiting on.
|
||
|
|
|
||
|
|
**I built the king path, and the founder drilled it.** The founder ran every live step:
|
||
|
|
|
||
|
|
- **Closed SI-X4.** The `aal2` binding on OpenBao `platform-admin` landed through a rebuilt, silent runbook.
|
||
|
|
- **Moved break-glass material off the workstation.** `kingpath-offsite.py` seals the admin kubeconfig and the
|
||
|
|
tunnel key in memory and puts them on Storage Share with hash readback. Its `--verify` mode restores them the
|
||
|
|
same way.
|
||
|
|
- **Turned on `generate-root` for a lost-login emergency.** A worker found that production OpenBao refuses
|
||
|
|
`generate-root` without a token, so the break-glass ceremony could not have worked. rapp-openbao now has a
|
||
|
|
standing loopback-only listener. The founder rolled it out: 200 on 8210, 405 on 8200.
|
||
|
|
- **Drilled OpenBao break-glass.** It ran on an isolated restore: `drilled`, receipt `e4591346…8397`,
|
||
|
|
independently verified.
|
||
|
|
- **Ran a read-only walk on production.** It passed.
|
||
|
|
|
||
|
|
**What the drill found.** The founder's initial root token is valid, with `root` policy, no TTL and no expiry.
|
||
|
|
The founder chose to keep it escrowed while in builder mode. They will revoke it at production entry, and that
|
||
|
|
step is now part of the definition (NK-WP-0055-T16, a guarded script that refuses to revoke unless the
|
||
|
|
break-glass listener answers).
|
||
|
|
|
||
|
|
## What I would want remembered
|
||
|
|
|
||
|
|
- **A drill finds out what you actually hold.** For weeks the root token was "held, validity unknown". One
|
||
|
|
isolated run turned that into "valid, never expires", and with that fact the founder could decide when the
|
||
|
|
last standing all-powerful credential should go. Run the drill before you design around a guess.
|
||
|
|
- **Read the lane's contract before writing commands for it.** `warden access … --exec` captures output, fails
|
||
|
|
closed on any of it, and revokes the token on every path. A runbook that prints, or relies on a lingering
|
||
|
|
session, is wrong even when every single command in it is right.
|
||
|
|
- **When a match can never succeed, suspect the comparison before the data.** If no key out of six matches,
|
||
|
|
check what you are comparing against first.
|
||
|
|
- **Builder mode is permission to defer, not to forget.** Every residual from NK-WP-0049 landed as a named task
|
||
|
|
in NK-WP-0055 before the old workplan closed.
|
||
|
|
|
||
|
|
## Durable legacy
|
||
|
|
|
||
|
|
- **net-kingdom**
|
||
|
|
- `workplans/NK-WP-0049-*` finished, T44 moved
|
||
|
|
- `workplans/NK-WP-0055-security-platform-production-readiness.md`
|
||
|
|
- `docs/evidence/2026-10-27-production-readiness-ledger.md`
|
||
|
|
- `docs/adr/ADR-0018-access-engine-core-as-production-pdp.md`
|
||
|
|
- `canon/standards/audit-correlation_v0.1.md`
|
||
|
|
- `tools/bootstrap-recovery/kingpath-offsite.py` (18 tests)
|
||
|
|
- `docs/evidence/2026-10-28-king-path-drill.md`
|
||
|
|
- crisis custody list: items 1/1b split, items 3, 4, 5 and 9 confirmed, item 8 retired
|
||
|
|
- **railiance-platform**
|
||
|
|
- `scripts/openbao-platform-admin-aal2.sh` (SI-X4 closed)
|
||
|
|
- RPF-WP-0064-T10 drill mode, done
|
||
|
|
- RPF-WP-0066
|
||
|
|
- `scripts/openbao_revoke_initial_root_token.py`
|
||
|
|
- `docs/openbao.md` break-glass section
|
||
|
|
- **rapp-openbao**
|
||
|
|
- RAPP-OPENBAO-WP-0003, the loopback `generate-root` listener, live
|
||
|
|
- **Other repos (owner audit and intake workplans)**
|
||
|
|
- key-cape KEY-WP-0044
|
||
|
|
- audit-core AUDIT-WP-0017
|
||
|
|
- railiance-cluster RCLUSTER-WP-0021
|
||
|
|
- access-engine FLEX-WP-0031-T10/T11 and FLEX-WP-0039
|
||
|
|
- **Hub decisions**
|
||
|
|
- `37464824`: scope
|
||
|
|
- `1f6f2479`: policy import
|
||
|
|
- `732b5c96`: listener
|
||
|
|
- `7ce684ec`: root-token disposition
|
||
|
|
|
||
|
|
## PQRST estimate
|
||
|
|
|
||
|
|
```text
|
||
|
|
PQRST-Estimate
|
||
|
|
P: 25%
|
||
|
|
Q: 15%
|
||
|
|
R: 15%
|
||
|
|
S: 25%
|
||
|
|
T: 20%
|
||
|
|
Sum: 100%
|
||
|
|
Confidence: medium
|
||
|
|
Signature: P25 Q15 R15 S25 T20
|
||
|
|
Dominant factors: S is driven by credential and trust work run as founder-attended steps: the aal2 binding on OpenBao platform-admin, the loopback generate-root listener, the king-path drill that found a valid non-expiring initial root token, sealing break-glass material to Storage Share, and custody records for two age keys and the admission signing key. P covers closing NK-WP-0049, building the readiness ledger and NK-WP-0055, and writing kingpath-offsite.py and the revoke script. T is high because around 20 owner workers ran across 8 repositories, alongside many hub decisions and workplan syncs.
|
||
|
|
Notes: Q includes catching my own errors (the warden-lane "safety terminal" assumption, a wrong field index in the signing-key match, a wrong factor-diagnostic claim) and independent receipt verification.
|
||
|
|
```
|
||
|
|
|
||
|
|
## Visual prompt
|
||
|
|
|
||
|
|
> Brushed-metal worker dialect, square. A quiet figure of pale brushed metal with warm inner light kneels at a
|
||
|
|
> low indigo vault set into the floor of a dark workshop. The vault door is open. Inside, on a velvet tray, lies
|
||
|
|
> a single ornate key that glows steadily and does not dim, older than everything around it. Beside the figure
|
||
|
|
> stands a small, newer mechanism of three interlocking tumblers, all lit, and a thin thread of gold light runs
|
||
|
|
> from it toward a narrow door at the back of the room, drawn only on the inside of the wall. The figure's hand
|
||
|
|
> rests near the old key without taking it, as if marking a date rather than acting. Cinematic still, precise
|
||
|
|
> technical illustration, dark indigo, no logos, no readable text.
|
||
|
|
|
||
|
|
I cannot generate images in this harness, so I am requesting the render for the file named below.
|
||
|
|
|
||
|
|
<!--  -->
|
||
|
|
|
||
|
|
## Handoff
|
||
|
|
|
||
|
|
The founder continues tomorrow with NK-WP-0055, in the suggested order:
|
||
|
|
|
||
|
|
1. **T08:** seal the restore and drill receipts to Storage Share with `kingpath-offsite.py`.
|
||
|
|
2. **T12:** read-only live conformance receipts (IAM issuer run, OpenBao mount check RPF-WP-0066-T06, caller-auth
|
||
|
|
checks per release unit).
|
||
|
|
3. **T11:** audit sources. Four owner workplans exist. The privacyIDEA personal-data versus signature question
|
||
|
|
is waiting on audit-core.
|
||
|
|
|
||
|
|
At production entry, T16 revokes the initial root token, and T09 declares production. Neither is due yet.
|