Break Forgejo good-case delivery into four observable checkpoints
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Reject generated-only commits / generated-commit-guard (push) Successful in 10s

This commit is contained in:
codex 2026-10-18 18:51:35 +02:00
parent 4367456d29
commit bab3dd1c9d
5 changed files with 478 additions and 9 deletions

View file

@ -79,3 +79,20 @@ flow before deciding whether a source change or rollout is needed. Publish its
working owner commands and bounded measurements, then audit both functional
milestones and the live hardening handoff. Source files remain authoritative;
normal consistency/publication and exact Hub readback must verify this revision.
## Forgejo follow-through and publication
The read-only [Forgejo readiness check](forgejo-readiness.json) identifies the
running upstream 11.0.3 image and its immutable runtime digest. The API and existing
developer Git connection respond, while the login page has no NetKingdom option.
The current release inventory is complete (T19). The next work is now split into
four visible source tasks: T41 prepares the smallest existing-owner sign-in
connection; T42 activates its exact reviewed/authorized revision; T43 verifies the
real human account; T44 verifies coding-agent Git and authenticated API use.
No blanket security-completion prerequisite or new runtime grant is implied.
The first refinement was normally published as `4367456d29069d7616d91b3b0cac549a09abf113`.
[Primary readback](publication-readback.json) verified every original WP-80 binding
and all 25 new WP-82 checkpoints, with all eight unrelated worktree/index states
preserved exactly. The four additional functional tasks keep every original ID
unchanged and use normal Repo Manager-assigned identifiers.

View file

@ -0,0 +1,37 @@
{
"observed_at": "2026-10-18",
"observation_scope": "Read-only native/public metadata and ordinary existing Git connection; no authentication-source or deployment mutation",
"deployment_uid": "e8eff0aa-64bb-4b44-9a80-a66612986355",
"generation": 15,
"ready_replicas": 1,
"configured_image": "code.forgejo.org/forgejo/forgejo:11.0.3-rootless",
"runtime_image_id": "code.forgejo.org/forgejo/forgejo@sha256:691657c7e64af7730a2e885e6d022cf16ae60724931c5392bd61838afadcaeba",
"public_version_api": {
"path": "/api/v1/version",
"http_status": 200,
"version": "11.0.3+gitea-1.22.0",
"authenticated_consumer_proof": false
},
"public_login": {
"path": "/user/login",
"http_status": 200,
"local_login_form": true,
"netkingdom_keycape_oauth2_mentions": 0,
"federated_signin_verified": false
},
"git_read": {
"command": "git ls-remote origin refs/heads/main",
"status": "passed",
"observed_revision_before_refinement": "6dd619fdc7d1351fcdfd3fcac571a90b1925e3ac",
"profile": "existing authenticated workstation developer SSH path",
"independent_current_keycape_identity_proved": false
},
"next_functional_blocker": "No NetKingdom sign-in option. Prepare existing owner registration/custody/authentication-source connection using the current release first.",
"remaining_checkpoints": [
"CUST-WP-0080-T41",
"CUST-WP-0080-T42",
"CUST-WP-0080-T43",
"CUST-WP-0080-T44"
],
"no_new_native_or_credential_authority": true
}

View file

@ -0,0 +1,348 @@
{
"verified": true,
"commit": "4367456d29069d7616d91b3b0cac549a09abf113",
"primary_projection_exact": true,
"workplans": [
{
"workplan_id": "dfadb19b-445e-59c6-bcd6-48e87b912c52",
"source": "CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md",
"verified_tasks": 40,
"bindings": [
{
"task_id": "CUST-WP-0080-T01",
"hub_task_id": "c770f7e1-25eb-53ec-9a37-1f7794077ff8",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T02",
"hub_task_id": "5973026f-8ca9-5882-99fe-65a54bc250ac",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T03",
"hub_task_id": "87637402-02f1-57c1-8fbc-4141598af8e3",
"status": "progress"
},
{
"task_id": "CUST-WP-0080-T04",
"hub_task_id": "82378b0f-7004-5c2f-9683-b356a1227576",
"status": "todo"
},
{
"task_id": "CUST-WP-0080-T05",
"hub_task_id": "ed8b909a-23bf-5e5f-b600-e477fbae136b",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T06",
"hub_task_id": "6aca534c-5c7a-556f-b6b6-406433670c29",
"status": "progress"
},
{
"task_id": "CUST-WP-0080-T07",
"hub_task_id": "bb236dea-30f7-5437-b01c-f14d2509e061",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T08",
"hub_task_id": "18b885fe-503f-5ebc-b390-808f71316264",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T09",
"hub_task_id": "a1f2dbe0-13d4-57a2-a2b5-c0137cd48410",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T10",
"hub_task_id": "1f3c78af-5686-58ea-9133-8afc2df36b8f",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T11",
"hub_task_id": "bffd4e10-2cf0-5835-a8d0-ae1763ca3873",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T12",
"hub_task_id": "bb09e414-6d79-5dcd-b8e6-b73a046a4dda",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T13",
"hub_task_id": "793e78f0-7782-5e48-bdc0-b65127b32ecb",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T14",
"hub_task_id": "7ecbd622-03a8-5b49-9621-8d21d7d15890",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T15",
"hub_task_id": "434d9c78-7789-5b78-8d9d-d87b0638b469",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T16",
"hub_task_id": "e6183073-cc8e-5c6f-8fbd-db50bb1a466c",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T17",
"hub_task_id": "4de46468-7ae2-59e3-be2b-1a32506153a5",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T18",
"hub_task_id": "fd796e9c-dd70-5c65-a6fe-eafe3911bc8f",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T19",
"hub_task_id": "4ffd2e33-d887-5686-bad1-7f32a56191a8",
"status": "progress"
},
{
"task_id": "CUST-WP-0080-T20",
"hub_task_id": "0d9df435-b9a2-5b89-833d-799785c969a9",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T21",
"hub_task_id": "fa11a2a4-4dbd-5dfb-ad29-bc7a99cc6258",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T22",
"hub_task_id": "88588db8-8c6e-5d15-a85b-2c068f4e8a2a",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T23",
"hub_task_id": "266e228b-7754-5323-b0c6-37f860592d90",
"status": "todo"
},
{
"task_id": "CUST-WP-0080-T24",
"hub_task_id": "a4f06ce0-69a5-5cbb-9d78-6c5b89ba9853",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T25",
"hub_task_id": "3be1c76d-a5f3-5dea-9777-349dc97e836e",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T26",
"hub_task_id": "0491b6b4-a238-58ef-bf3a-505749e5655c",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T27",
"hub_task_id": "19540d29-c4df-5f1a-acf7-127965c9a396",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T28",
"hub_task_id": "5ac99f55-0dde-5d1c-b88c-b85f34469abc",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T29",
"hub_task_id": "3ec89fb2-fe97-50f5-a3c9-88b731b0d2ec",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T30",
"hub_task_id": "457400ad-6c44-5160-a77a-63c6ad5acabc",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T31",
"hub_task_id": "cbf32375-279a-5bf3-b867-06333a1ff2ca",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T32",
"hub_task_id": "5a0cb7f7-1cd8-50ba-8af2-a2b13ed34a18",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T33",
"hub_task_id": "4547ac4c-8893-54fe-ae6e-362682bb7920",
"status": "todo"
},
{
"task_id": "CUST-WP-0080-T34",
"hub_task_id": "393b9fcc-323b-5182-92c6-44530fce7efb",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T35",
"hub_task_id": "db274192-07d6-5be7-9c1e-d63c5a9fb57f",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T36",
"hub_task_id": "586232a1-57b0-5e04-a61b-fb687bcc8999",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T37",
"hub_task_id": "d533ca34-a691-5f8e-8cc2-5f408b679538",
"status": "progress"
},
{
"task_id": "CUST-WP-0080-T38",
"hub_task_id": "2350a829-bd8c-5c3b-9f39-07bfa1c3f228",
"status": "done"
},
{
"task_id": "CUST-WP-0080-T39",
"hub_task_id": "da6ae9a3-9107-5ca7-adb2-c9d85b3c529c",
"status": "cancel"
},
{
"task_id": "CUST-WP-0080-T40",
"hub_task_id": "8e71f6f0-9fc3-509b-8f1b-768f7d9cbd0e",
"status": "cancel"
}
]
},
{
"workplan_id": "b29f9f25-b508-5c2c-98fd-2f6877f109cf",
"source": "CUST-WP-0082-netkingdom-security-hardening.md",
"verified_tasks": 25,
"bindings": [
{
"task_id": "CUST-WP-0082-T01",
"hub_task_id": "2ac61e1a-5a01-5ff9-ae35-017efe1e987c",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T02",
"hub_task_id": "a88d7bbe-49d8-5dc0-a613-eeebb756bd0c",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T03",
"hub_task_id": "55e99c7e-69de-523a-88f1-660c3f69edb0",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T04",
"hub_task_id": "aa7112b1-e76e-520e-a59a-6aa4aa39b35d",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T05",
"hub_task_id": "8e9c5b9a-8315-5efa-9cd3-00a113c6ea81",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T06",
"hub_task_id": "a7cf387e-da06-5cca-8815-43a4ecbf8ea9",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T07",
"hub_task_id": "c555c76a-00e8-5d07-9aef-7a4e6ac7ea11",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T08",
"hub_task_id": "f1dbdb5d-30cb-5012-9fa5-e59520ba2aae",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T09",
"hub_task_id": "88c0467d-b8b8-5972-b50a-2a87b51365fb",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T10",
"hub_task_id": "5ddfe024-b823-51c9-ac4d-ec5e53c47346",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T11",
"hub_task_id": "5b3767a0-5657-5ae3-b094-70e429a26617",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T12",
"hub_task_id": "cbac0912-ac45-58d4-93db-8f49ac7750b2",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T13",
"hub_task_id": "1903466c-674f-5025-acd7-873396c6d2fe",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T14",
"hub_task_id": "38363478-e46b-54bd-972d-ce998f3b8dd0",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T15",
"hub_task_id": "564a545a-b43d-5013-8f1b-e34cd54b52c7",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T16",
"hub_task_id": "90c8fb36-9032-57e7-85da-684d18e5c0b1",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T17",
"hub_task_id": "9e35af30-ec53-58f4-8517-5a5df85b6c79",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T18",
"hub_task_id": "316d9fc2-27e3-53ce-809d-a50769fa9734",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T19",
"hub_task_id": "9e26f419-0547-596a-bd0c-66b39f2d6ba8",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T20",
"hub_task_id": "eef7e3d9-9cfb-5525-af82-a8cc1bba6e67",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T21",
"hub_task_id": "d3dd8c35-284b-5035-a1a3-e0a0dbef86ba",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T22",
"hub_task_id": "43a94f1e-e906-55ac-a837-d9ce5c495d6b",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T23",
"hub_task_id": "4fda91f5-94c1-52fc-9dbd-c3693950165b",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T24",
"hub_task_id": "2c92d61d-61ed-5813-a2e0-6e055c6cb564",
"status": "todo"
},
{
"task_id": "CUST-WP-0082-T25",
"hub_task_id": "18cc3a93-f3ac-561c-84ce-8f009130c951",
"status": "todo"
}
]
}
],
"unrelated_worktree_and_index_states_preserved": 8,
"hardening_conformance_claimed": false
}

View file

@ -0,0 +1,18 @@
{
"verified": true,
"original_bindings_preserved": 40,
"new_functional_breakdown_tasks": 4,
"wp80_total_tasks": 44,
"wp82_live_hardening_tasks": 25,
"deferred_full_checkpoints_not_completed": 19,
"actual_human_and_agent_playwright_trials": "passed",
"forgejo_next_blocker": "NetKingdom sign-in option absent",
"wp80_status_counts": {
"done": 15,
"progress": 4,
"todo": 6,
"cancel": 19
},
"prior_publication_proof": "publication-readback.json",
"goal_complete": false
}

View file

@ -23,7 +23,7 @@ decision `9663d4ca-3793-4ad7-9dc1-954001d43596`.
| Delivery milestone | Status | Observable result / remaining work |
| --- | --- | --- |
| 1. Playwright for a human and coding agent | **Delivered in the supervised build profile** | Both actual supported-command trials passed on railiance01, each with 14 steps, keyboard interaction and desktop/mobile screenshots. T25/T26. |
| 2. Everyday Forgejo development | **Next; not yet accepted** | Record the actual release, verify supported sign-in and everyday Git/API use, then publish the entry commands. T19/T23. |
| 2. Everyday Forgejo development | **Next; not yet accepted** | Current 11.0.3 release identified; API and Git respond, but NetKingdom sign-in is absent. T41 prepares the existing-owner connection; T42 activates the reviewed change; T43/T44 verify human sign-in and agent Git/API use. T23 collects acceptance. |
| 3. Repeatable entry points and close-out | **In progress** | Supported commands, measured steps/manual touches, exact source/Hub readback and final functional audit. T33/T37/T38/T04. |
| Earlier delivered engineering | **8 checkpoints** | Seven bounded source reviews T07-T13 plus the native scanner/publication repair T20. These retain their original scope. |
| Security hardening | **Deferred, not fixed** | 19 complete checkpoints and 6 remaining acceptance scopes transferred to live CUST-WP-0082. All 16 full architecture gates remain unaccepted. |
@ -35,9 +35,10 @@ This is a supervised development connection; independently authenticated human
and registered-agent transport remains hardening work. No new service, gateway,
identity evaluator or browser client was built.
**Next:** T19 first checks whether the already deployed Forgejo release supports
the selected positive flow. Build or integrate only a demonstrated functional
blocker; then T23 verifies actual sign-in and everyday Git/API use. Broader current
**Next:** T19 identified the current upstream Forgejo release and the concrete
missing NetKingdom sign-in option. T41 prepares the smallest existing-owner
connection for that release. T42-T44 then cover activation and actual use.
Build or integrate only a demonstrated functional blocker. Broader current
identity, inverse, writer-exclusion and negative matrices are no longer blanket
prerequisites for the good case. Keep at most two delivery checkpoints active.
@ -301,13 +302,13 @@ Transferred, not implemented: the original security acceptance and implementatio
```task
id: CUST-WP-0080-T19
status: progress
status: done
priority: high
depends_on: [CUST-WP-0080-T25, CUST-WP-0080-T26]
state_hub_task_id: "4ffd2e33-d887-5686-bad1-7f32a56191a8"
```
Stage: functional release readiness. Owner implementation: Apps / Forge; existing release records. First identify the current deployed image, source revision and supported sign-in/Git/API behavior. Reuse it if it delivers the selected good case. Build an exact owner revision with required assets and ordinary checks only if a demonstrated functional blocker requires it. No automatic new rollout. The complete integrated security artifact acceptance remains CUST-WP-0082-T20.
Completed functional release inventory: actual Ready Forgejo 11.0.3 upstream image, runtime digest 691657c7e64af7730a2e885e6d022cf16ae60724931c5392bd61838afadcaeba, Deployment generation 15. Public version API and ordinary authenticated Git read respond; the login page exposes the local form with no NetKingdom option. Exact read-only observations are in wp80-build-mode-r1/forgejo-readiness.json. This identifies T41's functional blocker; it does not prove federated sign-in. Reuse the existing upstream OIDC integration first; build a changed owner revision only for an observed incompatibility. The complete integrated security artifact acceptance remains CUST-WP-0082-T20.
## T20 - Accept the native receive-scanner correction and ordinary publication
@ -349,13 +350,13 @@ Transferred, not implemented: the original security acceptance and implementatio
```task
id: CUST-WP-0080-T23
status: todo
status: progress
priority: high
depends_on: [CUST-WP-0080-T19]
state_hub_task_id: "266e228b-7754-5323-b0c6-37f860592d90"
```
Stage: functional acceptance. Owners: NetKingdom / KeyCape / Apps / Forge; existing NK-WP-0048 and owner release paths. Use the supported entry points to demonstrate actual sign-in, an everyday permitted Git operation and an API operation under the stated build profile. Record concrete results, limitations and cleanup of any trial objects. Prepare an exact reviewable change if needed; do not deploy without its actual authorization. Full per-operation current identity, denied cases, revocation, exact inverse and rollback remain CUST-WP-0082-T01-T05 and T20.
Functional acceptance umbrella for T41-T44. Owners: NetKingdom / KeyCape / Apps / Forge; existing NK-WP-0048 and RAPPS-WP-0016 paths. Demonstrate real NetKingdom sign-in for the existing human account, plus everyday coding-agent Git and authenticated API use under the stated build profile. Preserve account/repository history and record trial cleanup. Existing local sign-in and public version API availability do not close the federated sign-in requirement. Full per-operation current identity, denied cases, revocation, exact inverse and rollback remain CUST-WP-0082-T01-T05 and T20.
## T24 - Accept attended U08 factor recovery and fresh sign-in
@ -505,7 +506,7 @@ Transferred, not implemented: the original security acceptance and implementatio
```task
id: CUST-WP-0080-T37
status: progress
status: todo
priority: high
state_hub_task_id: "d533ca34-a691-5f8e-8cc2-5f408b679538"
```
@ -545,6 +546,54 @@ state_hub_task_id: "8e71f6f0-9fc3-509b-8f1b-768f7d9cbd0e"
Transferred, not implemented: the original security acceptance and implementation-owner references now live in CUST-WP-0082-T19 in [WP-82](CUST-WP-0082-netkingdom-security-hardening.md). Founder sequencing decision 9663d4ca-3793-4ad7-9dc1-954001d43596. Original identity and history are retained; this cancellation counts as deferred work, not completed delivery.
## T41 - Prepare the minimal existing-owner Forgejo sign-in connection
```task
id: CUST-WP-0080-T41
status: progress
priority: high
depends_on: [CUST-WP-0080-T19]
state_hub_task_id: "d6f1da6c-4e5f-5bb6-bbf2-ddddd69646e8"
```
Implementation owners: Apps RAPPS-WP-0016-T02; KeyCape KEY-WP-0038-T02; existing NetKingdom registration/delivery path. Produce exact current issuer/client/callback and value-free custody references, then prepare the supported upstream 11.0.3 authentication-source configuration. Inspect current metadata and reuse existing registrations/delivery where present. Prove positive protocol compatibility before requiring a custom backend build. Exit: a concrete source diff and exact activation/verification/rollback packet, including actual prerequisites still missing. Do not resume the deferred per-operation client draft or implement a parallel issuer/registration service.
## T42 - Activate the reviewed Forgejo sign-in connection
```task
id: CUST-WP-0080-T42
status: todo
priority: high
depends_on: [CUST-WP-0080-T41]
state_hub_task_id: "bd135b74-05db-5f51-ac89-d1967fdcf36b"
```
Implementation owners: existing Apps / NetKingdom / Platform paths. Obtain the actual founder go for the exact prepared native change, plus any required owner reviews; existing scanner approval does not cover it. Execute the admitted revision, verify issuer/source readiness and the NetKingdom option, preserve local break-glass, and retain rollback/readback evidence. Exit: the sign-in option reaches the intended issuer successfully. Broader hardening is not a prerequisite unless a concrete functional blocker requires it.
## T43 - Verify the human Forgejo sign-in and existing-account continuity
```task
id: CUST-WP-0080-T43
status: todo
priority: high
depends_on: [CUST-WP-0080-T42]
state_hub_task_id: "f869f913-2349-5223-8c3e-5c76f4cebe60"
```
Prepare the shortest supported link/sign-in instructions for the founder's existing account. After the actual human run, verify successful NetKingdom sign-in and access to the same repositories/organisations, with a value-free receipt. Do not substitute the local password form, synthetic factors or another actor. Keep the later revocation/negative matrices in WP-82.
## T44 - Verify coding-agent Git and authenticated API use
```task
id: CUST-WP-0080-T44
status: todo
priority: high
depends_on: [CUST-WP-0080-T42]
state_hub_task_id: "8c9c4dda-5047-5d37-9037-4f7e5eac53d8"
```
Use an existing supported coding-agent access path and its stated build profile. Verify an ordinary Git read/write and authenticated API read, with exact source/result evidence and cleanup for any disposable object. Discover credential ownership through warden route; distribute no administrator kubeconfig or secret through coordination. The public version endpoint alone is insufficient. Publish the canonical owner commands and actual profile limits for T33/T37; independent current KeyCape checks per operation remain WP-82 work.
## Original security acceptance mapping retained for WP-82
| Architecture gate | Custodian evidence checkpoints |