Complete NK-WP-0051 with attended member and refusal evidence
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
This commit is contained in:
tegwick 2026-10-15 19:23:19 +02:00
parent c19eabc4ae
commit 9442858535
6 changed files with 189 additions and 16 deletions

View file

@ -0,0 +1,64 @@
{
"workplan": "NK-WP-0051",
"date": "2026-10-15",
"result": "pass",
"source": "Attended founder observations in this session, ops-mason native verifier receipts, railiance-platform delegated applier and overlay checks",
"admin": {
"uid": "platform-root",
"groups": [
"activity-core-operators",
"net-kingdom-admins",
"net-kingdom-users",
"whynot-design"
],
"assurance": "aal2",
"client_id": "openbao-admin",
"contained_session_exit": 0,
"ccr": "CCR-2026-0045",
"ccr_status": "applied"
},
"member": {
"uid": "bernd.worsch-3",
"groups": [
"reuse-surface-hub-writers",
"tenant:trial:demo-company:users",
"whynot-design"
],
"assurance": "aal2",
"client_id": "openbao-admin",
"result": "accepted",
"revoked": true
},
"non_member": {
"uid": "tegwick",
"groups": [
"railiance-admins"
],
"assurance": "aal2",
"client_id": "openbao-admin",
"result": "refused",
"openbao_error": "Vault login failed. error validating claims: claim \"groups\" does not match any associated bound claim values"
},
"overlay": {
"apply": "passed",
"verify": "passed after transient connection reset during gateway rollout",
"cluster_uid": "a553c742-0115-43d4-99a4-a5ca56fe0786",
"ui_role_browser_clickthrough": "Not separately exercised; retained in RPF-WP-0057-T04. Native attended OIDC logins for both roles passed expected outcomes."
},
"verification": {
"directory_helper": "68 passed",
"platform_credential_and_ui_tests": "64 passed, 2 unrelated failures: CCR-2026-0035 schema validation; core-hub resource inventory expectation",
"ccr_0045_validate": "passed",
"ccr_0045_dry_run": "passed; no warnings"
},
"limits": [
"No KV secret values read",
"User diagnosis values are founder observations, not independently captured browser evidence",
"No independent live platform-admin entity-policy inventory performed",
"No changes to directory memberships, admin entity policy, or ops-mason-survey"
],
"receipts": {
"reuse-surface-hub-writer-member.txt": "1b61f06bba55562dc833345f8c10cfa286212f84815b9fcdcdb6f28c9cf0a328",
"reuse-surface-hub-writer-non-member.txt": "94fa475eb31e4c6a61c223b997b426c960a5144384d4aa688b4de01c8a47d322"
}
}

View file

@ -0,0 +1,21 @@
mode=member
at=2026-10-15T17:16:54Z
addr=http://127.0.0.1:18200
role=reuse-surface-hub-writer-workload-kv-read
policy=workload-kv-read-reuse-surface-runtime
uid=bernd.worsch-3
uid_source=operator
assurance=aal2
assurance_source=operator
login=ok
openbao_error=
entity_id=c204099b-cb94-363f-e207-5ff4d4aa6e94
policies=workload-kv-read-reuse-surface-runtime
identity_policies=
platform/data/workloads/reuse/reuse-surface/runtime-secrets: read
platform/metadata/workloads/reuse/reuse-surface/runtime-secrets: read
platform/data/workloads/reuse/reuse-surface: deny
platform/metadata/workloads/reuse/reuse-surface: deny
platform/data/workloads/issue-core/issue-core/issue-core-runtime: deny
revoked=yes
result=pass

View file

@ -0,0 +1,21 @@
mode=non-member
at=2026-10-15T17:20:11Z
addr=http://127.0.0.1:18200
role=reuse-surface-hub-writer-workload-kv-read
policy=workload-kv-read-reuse-surface-runtime
uid=tegwick
uid_source=operator
assurance=aal2
assurance_source=operator
login=refused
openbao_error=Error authenticating: Error making API request. | URL: GET http://127.0.0.1:18200/v1/auth/netkingdom/oidc/callback?client_nonce=cnM23po0ewSOMtT1AhuU&code=[redacted]&id_token=&state=st_GrdNJIELAV9Evdxna5YB | Code: 400. Errors: | * Vault login failed. error validating claims: claim "groups" does not match any associated bound claim values
entity_id=
policies=
identity_policies=
platform/data/workloads/reuse/reuse-surface/runtime-secrets: not-run
platform/metadata/workloads/reuse/reuse-surface/runtime-secrets: not-run
platform/data/workloads/reuse/reuse-surface: not-run
platform/metadata/workloads/reuse/reuse-surface: not-run
platform/data/workloads/issue-core/issue-core/issue-core-runtime: not-run
revoked=n/a
result=pass

View file

@ -51,15 +51,21 @@ Matching `groups` to an OpenBao role stays a metadata read in ops-mason.
## Negative-login fixture ## Negative-login fixture
Fixture uid: `signin-probe-negative`. Fixture uid: `tegwick` (selected by the founder on 2026-10-15).
Founder confirmed existing MFA enrollment and directory membership of
`railiance-admins` only. The attended diagnosis independently of the directory
preview showed that same group list and `aal2` before OpenBao refused the
workload login. This replaces the original
proposed fixture `signin-probe-negative`.
- not a member of `reuse-surface-hub-writers` - not a member of `reuse-surface-hub-writers`
- not a platform admin (`net-kingdom-admins`) - not a platform admin (`net-kingdom-admins`)
- holds a one-time password (enrolled by the founder in NK-WP-0051-T05 at - holds a one-time password (existing MFA confirmed by the founder for
`https://pink-account.coulomb.social/`, realm `coulomb`) NK-WP-0051-T05; factor management at `https://pink-account.coulomb.social/`,
realm `coulomb`)
The user is never created or described with credentials in git. A The user is never created or described with credentials in git. A
successful diagnosis of this fixture shows `uid=signin-probe-negative`, successful diagnosis of this fixture shows `uid=tegwick`,
groups without `reuse-surface-hub-writers`, `assurance=aal2`, and then the groups without `reuse-surface-hub-writers`, `assurance=aal2`, and then the
OpenBao groups refusal. OpenBao groups refusal.
@ -69,5 +75,30 @@ OpenBao groups refusal.
| --- | --- | | --- | --- |
| key-cape page and log line | live 2026-10-15: `forgejo.coulomb.social/coulomb/key-cape@sha256:cdec9dd7c515f7e0a6169fc3fa560ee2cc47bf40d899755dec808c362f5ce010` (source `8c6c071`, includes `af3b1b0`). `signInDiagnosis: true` set on live `openbao-admin` 2026-10-15 (`sso/keycape-config` rv 71655453 → 75372162, byte-preserving, issuer restarted). Accepted 2026-10-15: founder `bao login -method=oidc -path=netkingdom role=platform-admin` showed the page and completed | | key-cape page and log line | live 2026-10-15: `forgejo.coulomb.social/coulomb/key-cape@sha256:cdec9dd7c515f7e0a6169fc3fa560ee2cc47bf40d899755dec808c362f5ce010` (source `8c6c071`, includes `af3b1b0`). `signInDiagnosis: true` set on live `openbao-admin` 2026-10-15 (`sso/keycape-config` rv 71655453 → 75372162, byte-preserving, issuer restarted). Accepted 2026-10-15: founder `bao login -method=oidc -path=netkingdom role=platform-admin` showed the page and completed |
| user-engine two-session lines | live 2026-10-15: `forgejo.coulomb.social/coulomb/user-engine@sha256:1e6547c40c93c49f01438edcf76c20f561ccebc110220bae020723505aa56c70` (source `7f1db71`, pinned in rapp-user-engine `a42c68f`). Also shows the account-site session `assurance`. Founder accepted: `platform-root · aal2` and Authelia `platform-root` | | user-engine two-session lines | live 2026-10-15: `forgejo.coulomb.social/coulomb/user-engine@sha256:1e6547c40c93c49f01438edcf76c20f561ccebc110220bae020723505aa56c70` (source `7f1db71`, pinned in rapp-user-engine `a42c68f`). Also shows the account-site session `assurance`. Founder accepted: `platform-root · aal2` and Authelia `platform-root` |
| ops-mason receipt, fresh-browser login, `capabilities-self` proof | ops-mason `fca5591` (MASON-WP-0012); live proof pending MASON-WP-0012-T04 | | ops-mason receipt, fresh-browser login, `capabilities-self` proof | ops-mason `fca5591` (MASON-WP-0012); both attended proofs passed 2026-10-15, member token revoked. [Receipts](evidence/2026-10-15-sign-in-diagnosis/acceptance.json) |
| `sys/capabilities-self` grant and UI workload-role select | railiance-platform `0f0282a` (RPF-WP-0057); CCR-2026-0045 approval/apply and overlay deploy pending RPF-WP-0057-T02/T04 | | `sys/capabilities-self` grant and UI workload-role select | railiance-platform `0f0282a` (RPF-WP-0057); CCR-2026-0045 approved by founder for both requested roles and applied through contained admin session (exit 0). Overlay deployed and `make openbao-verify-login-overlay` passed. Separate UI button clickthrough remains RPF-WP-0057-T04 |
## Attended acceptance — 2026-10-15
Both native verifier receipts passed. The founder observed the diagnosis
before continuing each login and confirmed the resulting OpenBao response:
| Login | Diagnosis | OpenBao result |
| --- | --- | --- |
| Admin apply | `platform-root`, includes `net-kingdom-admins`, `aal2` | Accepted; CCR-2026-0045 applied; contained session exited 0 |
| Member proof | `bernd.worsch-3`, includes `reuse-surface-hub-writers`, `aal2` | Accepted; exact workload policy, intended reads, parent/sibling denials, token revoked |
| Negative proof | `tegwick`, `railiance-admins` only, `aal2` | Refused: `claim "groups" does not match any associated bound claim values` |
[Acceptance record and receipt digests](evidence/2026-10-15-sign-in-diagnosis/acceptance.json),
[member receipt](evidence/2026-10-15-sign-in-diagnosis/reuse-surface-hub-writer-member.txt),
[negative receipt](evidence/2026-10-15-sign-in-diagnosis/reuse-surface-hub-writer-non-member.txt).
The receipts contain no token or KV value; callback codes are redacted.
The negative receipt names `tegwick` and preserves OpenBao's refusal text.
The uid and assurance receipt inputs are corroborated by the founder's
observations for those exact requests; CLI arguments alone are not evidence.
The approved login overlay is deployed and its HTTP verification passes.
Direct browser exercise of its role-selection controls remains in the existing
owner task RPF-WP-0057-T04; native attended OIDC logins exercised both roles.
NK-WP-0051's attended diagnosis/refusal goal is met. No group memberships,
admin entity policies or survey grant were changed; no KV values were read.

View file

@ -76,7 +76,7 @@ To see which directory groups a login will carry (NK-WP-0051,
[`docs/sign-in-diagnosis.md`](../../../docs/sign-in-diagnosis.md)): [`docs/sign-in-diagnosis.md`](../../../docs/sign-in-diagnosis.md)):
```bash ```bash
python3 lldap_admin.py groups --user signin-probe-negative \ python3 lldap_admin.py groups --user tegwick \
--root /absolute/private/custody --root /absolute/private/custody
``` ```

View file

@ -4,7 +4,7 @@ type: workplan
title: "Show who a workload sign-in actually is" title: "Show who a workload sign-in actually is"
domain: infotech domain: infotech
repo: net-kingdom repo: net-kingdom
status: active status: finished
flavor: implementation flavor: implementation
owner: codex owner: codex
topic_slug: netkingdom topic_slug: netkingdom
@ -57,6 +57,33 @@ Out of scope: widening `ops-mason-survey`, attaching
of a token, authorization code, email address, or one-time password. of a token, authorization code, email address, or one-time password.
Group display names and the uid are the diagnosis. They are not secret. Group display names and the uid are the diagnosis. They are not secret.
### Completion review — 2026-10-15
All six tasks are done. The founder selected existing MFA-enrolled `tegwick`
for the negative fixture and confirmed its sole directory group is
`railiance-admins`. Its attended diagnosis showed that uid/group and `aal2`
before the workload role refused the groups claim; the native verifier receipt
names the same uid and preserves the error. The member proof as `bernd.worsch-3`
passed all capability checks and revoked its token.
CCR-2026-0045 was approved by the founder in both requested roles and applied
through a contained `platform-root` OIDC/MFA session (exit 0). The approved
login overlay was deployed and its HTTP verification passed. The existing
owner task RPF-WP-0057-T04 retains separate UI role-selector clickthrough;
this does not block the completed native attended diagnosis/refusal goal.
Evidence: [acceptance and sanitized receipts](../docs/evidence/2026-10-15-sign-in-diagnosis/acceptance.json).
Directory-helper verification: **68 passed**. Platform checks: **64 passed,
2 unrelated failures** (CCR-2026-0035 schema and core-hub resource-list
expectation); CCR-2026-0045 validates and its dry-run has no warnings.
Security orientation: Emergent Knowledge **0.2.6**, package digest
`8d1d6a9d4d07fec7b619618de7dfe2be2254c1790f85f4198c7fe19db9751c02`;
`start` and `identity` were **withheld / orientation-only** because sources
changed. Reviewed their source cards, current `SECURITY-COMPANION.md`, owner
declarations and the current owner procedures directly. Retrieval grants no
live authority.
## Write the diagnosis contract ## Write the diagnosis contract
```task ```task
@ -153,7 +180,7 @@ password, no one-time password. Tests extend
the command. Matching those names to an OpenBao role stays a metadata read the command. Matching those names to an OpenBao role stays a metadata read
in ops-mason. in ops-mason.
Name one negative-login fixture in the T01 document (`signin-probe-negative`): Name one negative-login fixture in the T01 document (`tegwick`):
a uid that is not in a uid that is not in
`reuse-surface-hub-writers`, is not a platform admin, and will hold a `reuse-surface-hub-writers`, is not a platform admin, and will hold a
one-time password. Do not create that user in git. one-time password. Do not create that user in git.
@ -162,25 +189,27 @@ one-time password. Do not create that user in git.
```task ```task
id: NK-WP-0051-T05 id: NK-WP-0051-T05
status: wait status: done
depends_on: [NK-WP-0051-T04] depends_on: [NK-WP-0051-T04]
blocked_on: human
blocking_reason: "After T04 names the fixture uid. Founder enrolls its one-time password at https://pink-account.coulomb.social/, realm coulomb."
priority: medium priority: medium
state_hub_task_id: "afb5816f-5657-5fc8-856f-00ce5b431939" state_hub_task_id: "afb5816f-5657-5fc8-856f-00ce5b431939"
``` ```
The founder enrolls the factor. Enrollment is not `aal2`. A later login is Founder confirmed in this session (2026-10-15) that the existing account
`tegwick` already has MFA set up, and selected it instead of creating
`signin-probe-negative`. T05 is done on that confirmation. Founder confirmed directory membership
is `railiance-admins` only; the attended negative-login diagnosis showed the
same group. No directory changes were made.
Enrollment is not `aal2`. A later login is
`aal2` only when that login asks for the one-time password. `aal2` only when that login asks for the one-time password.
## Hand the OpenBao proof back to its owners ## Hand the OpenBao proof back to its owners
```task ```task
id: NK-WP-0051-T06 id: NK-WP-0051-T06
status: wait status: done
depends_on: [NK-WP-0051-T01] depends_on: [NK-WP-0051-T01]
blocked_on: message-from:ops-mason
blocking_reason: "Implemented in ops-mason fca5591 (MASON-WP-0012) and railiance-platform 0f0282a (RPF-WP-0057). Waits for CCR-2026-0045 apply, overlay deploy, and the MASON-WP-0012-T04 live proof."
priority: medium priority: medium
state_hub_task_id: "86fb4a6b-6655-57c2-b166-38c18e183eb0" state_hub_task_id: "86fb4a6b-6655-57c2-b166-38c18e183eb0"
``` ```
@ -199,3 +228,10 @@ Ask ops-mason and railiance-platform to do four things, and no others:
`ops-mason-survey` stays read-only. The workload policy stays off the `ops-mason-survey` stays read-only. The workload policy stays off the
admin entity. This task is done when both repos have accepted those four admin entity. This task is done when both repos have accepted those four
items, not when this repo edits them. items, not when this repo edits them.
Accepted live 2026-10-15: CCR-2026-0045 applied, overlay deployed/verified,
and both MASON-WP-0012-T04 proofs passed. The [contract evidence](../docs/sign-in-diagnosis.md#attended-acceptance--2026-10-15)
records the attended principal, group and assurance observations and native
receipt references. The pre-existing RPF-WP-0057-T04 retains separate UI
control clickthrough; no such browser interaction is claimed here.