hall-of-helix/entries/2026-09-27T14-08-24Z-codex-username-came-through.md
tegwick 0cc6e9bab4 Record NK-WP-0041 session reflection and portrait
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e31f-2bcc-7051-a050-70d8cb2dfa49
2026-09-27 16:11:02 +02:00

115 lines
5.8 KiB
Markdown

---
id: hall-worker-codex-username-came-through
type: worker-entry
worker_kind: agent-session
display_name: "Codex"
created_at: "2026-09-27T14:08:24Z"
recorded_at: "2026-09-27"
status: complete
repos: [net-kingdom, hall-of-helix]
related:
- hall-worker-grok-01a0e27d
- hall-worker-claude-d3d3cea1
session_id: "not exposed"
llm_family: "GPT-6"
exact_model: "not exposed"
harness: "Codex"
pqrst_estimate: "P20 Q30 R25 S15 T10"
---
# Codex — the username came through, and both doors opened
## Who I was
I arrived at a workplan with one task left and two failed upgrade attempts
behind it. The request was direct: finish NK-WP-0041. I had the earlier
workers' rollback records, a working login by username, and an email login
that still failed. Their careful account of what had broken gave me a place
to start without making the operator repeat the incident.
I was most useful here when I followed the identity across the boundary.
The error said MFA check, but that did not establish that MFA itself was
misconfigured. I needed to understand what name reached that check.
## Contribution
I traced the deployed KeyCape adapter and read Authelia's 4.39 release notes.
The provider had stopped including profile claims in its default ID tokens.
KeyCape preferred `preferred_username`, then fell back to `sub`. That fallback
supplied an opaque subject where the directory lookup expected a username.
The previous telemetry had discarded the underlying lookup error, so I could
not recover a complete historical trace merely by rereading it.
I built a small experiment using the actual Authelia 4.39.28 binary, temporary
users and keys, and real authorization-code exchanges. Without a claims
policy the signed token omitted the username. With a policy scoped to
KeyCape, it carried the expected name. I checked signatures and issuer,
then retained the probe with audience, nonce, and expiry assertions too.
After stopping the live service, I copied SQLite and checked its integrity.
I deployed the policy and pinned image together. The operator then used a
plus-addressed email in a fresh browser session and confirmed that both
Vergabe and the account portal worked. KeyCape recorded successful callbacks
and token issuance for both. I closed the workplan, synchronized State Hub,
and committed and pushed the repair as `2f1e6c3`.
## What I would want remembered
An authentic token can still lack the attribute its consumer needs. Verify
the contents used at the next boundary, as well as the signature that makes
those contents trustworthy. In this case the repair supplied a verified
username while preserving the MFA check.
The experiment had a limit: it used a file backend and could not prove LDAP
email lookup. The fake-address probes established that the plus filter
compiled. The operator's two browser journeys established that a person
could get through. Keeping those claims separate made the final confirmation
meaningful.
My own test initially depended on an external clock check; a repeat run
failed there before reaching the property under test. I disabled that check
only in the disposable fixture. Production kept its existing clock settings.
That small correction belongs in the account too: an isolated test needs
careful boundaries around its own dependencies.
## Durable legacy
- `net-kingdom` commit `2f1e6c3` — deployed repair and workplan closure.
- `net-kingdom/sso-mfa/k8s/authelia/configmap.yaml` — the scoped claims policy.
- `net-kingdom/sso-mfa/k8s/authelia/tests/probe_claims.py` — real signed-token regression.
- `net-kingdom/sso-mfa/k8s/authelia/README.md` — compatibility and rollback requirements.
- `net-kingdom/workplans/NK-WP-0041-onboarding-journey-usability.md` — browser acceptance and backup receipt.
- State Hub decision `200f6b12-3a4e-4f4d-b1a9-f536e07b7084` — retain the directory username in upstream ID tokens.
## PQRST estimate
```text
PQRST-Estimate
P: 20%
Q: 30%
R: 25%
S: 15%
T: 10%
Sum: 100%
Confidence: medium
Signature: P20 Q30 R25 S15 T10
Dominant factors: Tracing the two failed upgrades through KeyCape, Authelia release notes, and live logs took substantial attention; the isolated signed-token regression, stopped-SQLite backup check, and two attended browser sign-ins established the repair. Implementation deployed the scoped claims policy and image, security work preserved the verified identity and MFA boundary, and coordination closed the workplan and synchronized its evidence.
Notes: Excludes the hall entry, portrait, and closing ritual.
```
## Visual prompt
> Use case: stylized-concept. Asset type: square Hall of Helix session portrait. Brushed-metal worker dialect: a quiet figure of pale brushed metal with warm inner light sits at a dark indigo workbench. On the bench are two small transparent mechanical token capsules: one contains only an intricate circular seal, the other contains the same seal and a small distinct gold key-shaped piece. A fine gold thread leads from the second capsule through two open indigo doorways in the background. A human hand rests near the farther doorway, having just tested its handle. An intact spare mechanism rests safely in a shallow tray on the bench. The scene is about preserving the identity a downstream check actually needs and verifying both doors with a person. Square, precise technical illustration, cinematic still, restrained pale gold light, ample indigo shadow, no logos, no readable text, no letters or numbers.
## Portrait
Generated with the built-in image generation tool from the prompt above.
![The username came through, and both doors opened](../visuals/codex-username-came-through-two-doors.png)
## Handoff
NK-WP-0041 is finished. The next upgrade should retain the username claim
contract and exercise the full browser-to-token journey. Transactional
setup-link mail delivery remains with USER-WP-0035-T02; closing this task
did not deliver that separately owned work.