Prepare the existing contained Forgejo API login and silent read check
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
Reject generated-only commits / generated-commit-guard (push) Successful in 11s

This commit is contained in:
codex 2026-10-18 22:38:20 +02:00
parent 6d80894ef3
commit 556daf928e
5 changed files with 94 additions and 3 deletions

View file

@ -36,6 +36,11 @@ changes were preserved. The two postimage files retain exact published sources.
credentialed path remains unverified because the owner transport refused.
- `measurements.json`: bounded samples, command counts and explicit unknowns.
No cold-onboarding or comparative performance claim is made.
- `attended-api-preparation.json`: exact existing-owner login/role and silent
invocation of the existing Tea probe. Installed Warden source pins and shell
syntax are checked; no new runner or credential-policy change is introduced.
This prepares the founder-run attempt and does not prove interactive login,
session revocation or authenticated API success.
T33/T37 remain in progress until the actual Forgejo paths are accepted.
T42 still waits on decision `ad88edeb-7c7c-486f-a695-1a7abae5b20c`; no source

View file

@ -0,0 +1,14 @@
{
"id": "key-cape-oidc-login",
"domain": "forgejo-admin-workload-kv-read",
"handoff": {
"auth_method": "browser OIDC via key-cape / Keycloak at auth/netkingdom",
"path_template": null,
"fetch_command": "bao login -no-print -method=oidc -path=netkingdom role=forgejo-admin-workload-kv-read",
"policy_ref": null,
"exec_capable": true
},
"next_action": "Run the attended login and reviewed operation only inside the contained envelope: `warden access <need> --exec -- <reviewed-command>`. The private helper is preflighted, all output is suppressed, and the session is revoked and removed afterward.",
"advisory_exit_code": 0,
"login_or_fetch_executed": false
}

View file

@ -0,0 +1,45 @@
{
"prepared": true,
"executed": false,
"api_success_proven": false,
"command_recipe": "wp80_api_receipt_dir=$(mktemp -d /tmp/wp80-forgejo-api.XXXXXX)\nBAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200 warden access key-cape-oidc-login --domain forgejo-admin-workload-kv-read --exec -- sh -c 'umask 077; exec warden access forgejo-admin-api-token --exec --field API_TOKEN -- python3 /home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/check_forgejo_cli.py > \"$1\" 2>/dev/null' sh \"$wp80_api_receipt_dir/report.json\"\npython3 -m json.tool \"$wp80_api_receipt_dir/report.json\"\n",
"shell_syntax_check_exit_code": 0,
"login_lane": "key-cape-oidc-login",
"role": "forgejo-admin-workload-kv-read",
"resolved_login_command": "bao login -no-print -method=oidc -path=netkingdom role=forgejo-admin-workload-kv-read",
"role_source": "/home/worsch/ops-warden/wiki/playbooks/forgejo-admin-api-token.md",
"login_semantics_source": "Installed warden.proxy.proxy_attended_login_exec; captured login, silent child, self-revocation and helper removal",
"login_role_current_runtime_verification": "Not yet executed; current role functionality and actual API reads remain unverified",
"new_runner_created": false,
"new_credential_policy_or_grant": false,
"source_pins": [
{
"path": "/home/worsch/.local/share/uv/tools/ops-warden/lib/python3.12/site-packages/warden/cli.py",
"sha256": "196cd829d3dbfbd2333598a983687bde1f9bcdfadef95b2fd1d237c4a5f060a9",
"matches_owner_checkout": true
},
{
"path": "/home/worsch/.local/share/uv/tools/ops-warden/lib/python3.12/site-packages/warden/proxy.py",
"sha256": "69649bcf8979e4ed7f9104e927b458827a355c4846143367f4cd49c8b89b96da",
"matches_owner_checkout": true
},
{
"path": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/check_forgejo_cli.py",
"sha256": "2e56da76fbebd2601e07b2da3842aacc5236b67b969252265514d6b4a3af8ca8"
}
],
"expected_receipt": {
"passed": true,
"whoami_exit_code": 0,
"repository_read_exit_code": 0,
"returned_identity_matches": true,
"expected_repository_returned": true,
"temporary_configuration_removed": true
},
"separate_outer_requirements": [
"Contained OIDC login handed off to child",
"Outer session self-revocation confirmed",
"Outer helper cleanup confirmed"
],
"on_failure": "Keep the closed failure result. Empty report is not API evidence; do not broaden role or claim success."
}

View file

@ -82,9 +82,34 @@ points at a retired Gitea host; that credential was not used against the current
forge. No authenticated API result has been accepted.
`warden plan 'oidc login forgejo admin' --json` identifies the existing
founder-required KeyCape OIDC/MFA login lane. That human login is still a
prerequisite to resolve through the owner path. The recorded route plans and
closed failure markers are in the [entrypoint evidence](changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/README.md).
founder-required KeyCape OIDC/MFA login lane. Its existing role for reading this
credential is `forgejo-admin-workload-kv-read`, documented by the credential
owner. The founder can run the following in their own interactive terminal:
```sh
wp80_api_receipt_dir=$(mktemp -d /tmp/wp80-forgejo-api.XXXXXX)
BAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200 warden access key-cape-oidc-login --domain forgejo-admin-workload-kv-read --exec -- sh -c 'umask 077; exec warden access forgejo-admin-api-token --exec --field API_TOKEN -- python3 /home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/check_forgejo_cli.py > "$1" 2>/dev/null' sh "$wp80_api_receipt_dir/report.json"
python3 -m json.tool "$wp80_api_receipt_dir/report.json"
```
This reuses Warden's contained login and existing credential route. The inner
command emits only the reviewed probe's metadata JSON into a private receipt;
both child streams stay silent to the outer login envelope. Warden revokes the
temporary OpenBao session and removes its helper, while the probe removes its
isolated Tea configuration. No API credential or login token is printed or
retained in that receipt.
**Prepared, not executed:** this is the supported next attempt after the 403,
not proof that the current role/login works. Retain the outer Warden outcome as
well as the receipt. A missing/empty report means the API check has not produced
evidence. A report with `passed: true` must include successful identity and
repository reads; a revocation/cleanup failure remains a separate unresolved
outcome even if those reads succeeded. Do not rerun a failed command unchanged
or broaden the role to obtain a pass.
This read check does not activate the separate Forgejo sign-in rollout. The
recorded route plans and closed failure markers are in the
[entrypoint evidence](changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/README.md).
## Forgejo NetKingdom sign-in and repository privacy

View file

@ -607,6 +607,8 @@ Use an existing supported coding-agent access path and its stated build profile.
Baseline: existing SSH read and ordinary source publication work. The installed Tea default targets retired Gitea and was not reused. The current owner-routed API attempt returned OpenBao 403 before the isolated Tea probe received a credential; no API operation ran. The route plan identifies founder-required KeyCape OIDC/MFA caller login. [Evidence and current commands](../docs/changes/netkingdom-target-2026-10-18/wp80-development-entrypoints-r1/README.md). This retained failure does not close T44.
Prepared the [exact founder-run contained login and API check](../docs/netkingdom-development.md#forgejo-git-and-api) using existing Warden role substitution, the existing owner credential route and installed Tea probe. No extra runner or policy grant. Installed Warden implementation matches the inspected owner source; the command's shell syntax is checked. Actual human login, successful API reads and session-revocation/cleanup evidence remain missing; T44 stays open.
## T45 - Publish the verified browser entrypoint in existing discovery
```task