Settle the npm lane field, and record an ungoverned duplicate
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

The attended session enumerated field names at the governed path: NPM_AUTH_TOKEN
is the only field present, at KV version 2. This repository's record was correct.
secrets-engine's lowercase field name and the ops-warden catalog change made on
that statement both name a field absent from that path, so that change points the
front door at nothing and must be reverted before next use. The both-fields
reconciliation is ruled out.

The same session found the legacy path is real: secret/coulomb/whynot-design/
npm/publish exists at version 1, created five days after the governed lane was
verified, outside its policy and outside any CCR. Only metadata was read; field
names were not enumerated and nothing was deleted. Disposition is the new
RPF-WP-0035-T07, which asks first whether the consumer's proven publish has been
reading the duplicate rather than the governed lane.

Receipt carries field names only, attended_identity true, no mutation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WLUjpv3ssxNRAEPPgLFnEB

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1275505@bnt-lap001
Assistant-Session: 97265baa-f08f-4032-b290-a1e2965a69c5
This commit is contained in:
codex 2026-09-10 09:03:22 +02:00
parent 18f4ddec2b
commit 9d24086004
4 changed files with 104 additions and 13 deletions

View file

@ -101,6 +101,25 @@ verification:
- Secret value provisioned directly in OpenBao through approved operator custody.
- Positive and negative verification recorded with non-secret audit ids or timestamps.
evidence:
- at: '2026-09-10T07:00:55+00:00'
actor: bernd.worsch
kind: attended_field_name_resolution
result: passed
details:
- Attended founder session enumerated field names at platform/workloads/coulomb/whynot-design/npm-publish.
- The only field present is NPM_AUTH_TOKEN, at KV version 2. This request's
openbao.fields is correct and unchanged.
- secrets-engine reported a different, lowercase field name and ops-warden
changed their catalog and playbook on that statement; both name a field
absent from this path. The exact spelling is deliberately not repeated here
because the CCR secret-marker guard rejects it; see
docs/workload-kv-access-lanes.md. Reverting that catalog change is tracked
with the owners.
- Legacy path secret/coulomb/whynot-design/npm/publish exists at version 1,
created 2026-07-03T15:00:44Z, never updated, outside this request's policy.
Field names not enumerated. Disposition RPF-WP-0035-T07.
- Read-only; no value emitted, no mutation. Receipt
docs/evidence/2026-09-10-npm-lane-field-resolution.json.
- at: '2026-06-28T10:37:42+00:00'
actor: codex
kind: non_secret_openbao_apply_check

View file

@ -0,0 +1,30 @@
{
"schema": "platform.openbao-open-questions-session.v1",
"observed_at": "2026-09-10T07:00:55.690609+00:00",
"operation": "read-only observation",
"credential_values_emitted": false,
"openbao_mutations": 0,
"questions": [
"Q1",
"Q2"
],
"attended_identity": true,
"ambient_token_vars_present": [],
"q1_legacy_npm_path": {
"legacy_mount_present": true,
"legacy_path": "secret/coulomb/whynot-design/npm/publish",
"legacy_path_present": true,
"current_version": 1,
"created_time": "2026-07-03T15:00:44.99885594Z",
"updated_time": "2026-07-03T15:00:44.99885594Z"
},
"q2_npm_lane": {
"path": "platform/workloads/coulomb/whynot-design/npm-publish",
"readable": true,
"field_names": [
"NPM_AUTH_TOKEN"
],
"kv_version": 2,
"values_recorded": false
}
}

View file

@ -64,19 +64,22 @@ caller-scoped lane. The sibling lanes `issue-core-ingestion-api-key` and
`openrouter-llm-connect` remain draft and are tracked separately by
`RAILIANCE-WP-0009` and `RAILIANCE-WP-0010`.
> **Field name contested, 2026-09-09 — do not change this on either side yet.**
> secrets-engine states the KV field is `npm_token` and that `NPM_AUTH_TOKEN` is
> only the environment variable their publication-scope policy injects;
> ops-warden has already corrected their catalog and playbook on that statement.
> This repository holds two dated live receipts naming `NPM_AUTH_TOKEN` as the
> OpenBao **field**, in `CCR-2026-0001`: a field-presence check on
> 2026-06-28T10:37:42Z, and an attended fetch by the founder on
> 2026-06-28T15:22:29Z that exited successfully with output to `/dev/null` — a
> `-field=` fetch that exits zero means that field exists. Both records can be
> true if the path carries **both** fields. Q2 of the attended session
> (`docs/openbao-open-questions-session.md`) enumerates the actual field names
> and settles it. Until then this table stays as written, because it is the side
> backed by receipts.
> **Field name settled, 2026-09-10 — attended read, `NPM_AUTH_TOKEN` confirmed.**
> An attended founder session enumerated the field names at this path: the only
> field present is `NPM_AUTH_TOKEN`, at KV version 2. The table above is correct
> as written and needs no change. secrets-engine's `npm_token` and the
> ops-warden catalog change made on that statement both name a field that does
> not exist at this path, so that change must be reverted before the lane is
> next used. The "both fields exist" reconciliation is ruled out.
> Receipt: [2026-09-10 field resolution](evidence/2026-09-10-npm-lane-field-resolution.json)
> — field names only, no value emitted, `attended_identity: true`.
>
> **The same session found the legacy path is real.**
> `secret/coulomb/whynot-design/npm/publish` exists at version 1, created
> 2026-07-03T15:00:44Z and never updated — five days *after* this governed lane
> was verified. It sits outside this lane's exact-path policy and outside
> CCR-2026-0001. Its field names were not enumerated. Disposition is
> RPF-WP-0035-T07; do not read, copy or delete it outside that task.
The fetch command returns the secret value to the authenticated caller. Run it
only in an attended shell or through a process that consumes the value without

View file

@ -242,6 +242,45 @@ Neither Warden fetch selector is resolvable through these verifier-only CCRs.
Do not re-request the completed two named reviews or reseed these paths.
Rotation is a distinct, version-guarded operation.
## Dispose of the ungoverned whynot-design npm duplicate
```task
id: RPF-WP-0035-T07
status: todo
priority: high
```
Found by the attended session on 2026-09-10 while settling the npm field
question. `secret/coulomb/whynot-design/npm/publish` exists at version 1,
created 2026-07-03T15:00:44Z and never updated — five days after the governed
lane at `platform/workloads/coulomb/whynot-design/npm-publish` was verified
(CCR-2026-0001, 2026-06-28). It sits outside that lane's exact-path policy and
outside any CCR here. Receipt:
`docs/evidence/2026-09-10-npm-lane-field-resolution.json`.
Only metadata was read. Its field names were not enumerated, its value was not
read, and nothing was deleted — a location holding real credential material is
disposed of deliberately, not tidied away in the session that found it.
The likely explanation, unconfirmed: secrets-engine reports the lane's field
under a lowercase name that is absent from the governed path, and their catalog
declares this legacy location. If their proven pilot publish read from here,
then a working production lane has been running off an ungoverned duplicate,
and the governed lane's acceptance evidence describes a path the consumer does
not use. That is worth establishing before anything is removed.
**Unblock:** secrets-engine confirms which location their publish actually reads
and whether the two hold the same value; the owner of the legacy path is
identified; and a metadata-or-field-name read of the legacy path is admitted so
the duplicate can be characterised without reading its value.
**Done when:** the legacy path's provenance and consumer are established, the
governed lane is confirmed as the one in use or the consumer is moved to it as a
reviewed lane change, the duplicate is destroyed or brought under a CCR with an
owner, and the disposition is recorded. If the value proves to be live and
ungoverned, treat it as an exposure with the same custody rules as RPF-WP-0027:
never record the value, fingerprint, length or shape.
## Admit the separate approval client-side readers
```task