diff --git a/docs/evidence/2026-10-13-netkingdom-security/playwright-activation-preparation.json b/docs/evidence/2026-10-13-netkingdom-security/playwright-activation-preparation.json new file mode 100644 index 00000000..ec554f6c --- /dev/null +++ b/docs/evidence/2026-10-13-netkingdom-security/playwright-activation-preparation.json @@ -0,0 +1,86 @@ +{ + "observed_at": "2026-10-13", + "source_repo": "net-kingdom", + "source_base": "5dd74dfbdf3fd38adb1bfc1bdc1326181435f0e9", + "workplan_id": "NK-WP-0050", + "task_id": "NK-WP-0050-T02", + "custodian_task_id": "CUST-WP-0080-T05", + "result": "private_activation_patch_preparation_verified_not_live", + "files": { + "sso-mfa/k8s/keycape/playwright-activation.py": "5ac683b3324b00e6253f6040f4c73057027b1f98f7071160a6153794ba522757", + "sso-mfa/k8s/keycape/test_playwright_activation.py": "6fc22d091f27a76c32d2fb0a7fc3c6e18e54ff98d242699c518b2f9dc9fd4cbd", + "sso-mfa/k8s/keycape/playwright-registration.py": "bf2d6b83d93629df8ddaf6c31d6c7408ae3866969d63895714df0e08a570da99", + "sso-mfa/k8s/keycape/test_playwright_registration.py": "b97ea8619ac768f520e4058aeb50b0b1e8ef6d2e9a1a0fff932a151a3d4b61ae", + "docs/playwright-registration.md": "ebc7ce218965f548cfe21047d0de12aa529c3aa5f2537663eb74d43bba387f46", + "workplans/NK-WP-0050-playwright-consumer-registration.md": "0be0b643409d0731d4924c95566facdef58b1c65c5c1276f7f308ebfb2271fb7" + }, + "verification": { + "focused_tests": { + "run": 90, + "failures": 0, + "errors": 0, + "skipped": 0 + }, + "focused_log_sha256": "cbd33f8bf5d692c783413fce6bc3968bc5d21a8892c95b505a2137df55281bcc", + "jsonpatch_version": "1.32", + "independent_patch_application": "jsonpatch RFC 6902 on synthetic API objects; controller status simulated", + "native_startup_check": { + "original_registry_valid": true, + "proposed_registry_valid": true, + "verifier_sha256": "046d7d4d621c287ff0097bb7cdade377fa5187432bad253a55f1932111c83c6a", + "synthetic_only": true, + "issuer_revision": "1344fc80e56315c5c99f58993f9ee02ce79e8a76" + }, + "applied_files_match_frozen_manifest": true, + "secret_scan": { + "status": "clean", + "changed_blobs": 6, + "version": "8.30.1" + }, + "initial_focused_tests": { + "run": 88, + "failures": 0, + "errors": 0, + "skipped": 0 + }, + "collision_regressions": { + "baseline_failures": 2, + "reasons": [ + "unreviewed client-ID fallback audience accepted", + "second env name referencing proposed agent Secret/key accepted" + ], + "baseline_log_sha256": "65821b8a1e9a1e55e54b80613896c7baf46b901cbc4a95b5a3769bc2d08ba321", + "after_repair_passed": 2 + }, + "evidence_scan_triage": { + "rule": "generic-api-key", + "classification": "false_positive_public_source_revision", + "blocked_blob_id": "d42c50f0824b2dcf3584915c3873ac7dffc52837", + "verification": "Flagged keycape_source value exactly equals local KeyCape git HEAD; no credential value. Renamed field to issuer_revision; scanner rules and hooks unchanged." + } + }, + "behavior": [ + "Source/data/spec/UID/resourceVersion-bound private proposal, single Recreate issuer and immutable owner image profile.", + "Explicit stop, observed zero replicas and no remaining registry consumers, registry update, env binding update, then resume.", + "Direct/projected volume and env consumers, including terminating/init/ephemeral pods, prevent registry writes.", + "Native verifier checksum pin, both original/proposed config checks, explicit env names, clean subprocess environment and contained diagnostics.", + "Rollback accepts only exact retained original/candidate states; preserves pre-existing registrations/bindings; unknown or unrelated drift requires reconciliation.", + "No-op proposals and rollback before any execution cause no issuer outage.", + "Dedicated inventory considers the issuer client-ID audience fallback; proposed agent delivery cannot alias another issuer environment binding." + ], + "limits": [ + "No live CLI, Kubernetes client, credential access, registry read or mutation was used.", + "The private library is not an authority boundary: protected executor must supply fresh complete observations and an independently approved exact digest, with custody/identity evidence and recovery-state custody.", + "Kubernetes has no cross-object transaction; an exclusive attended maintenance procedure and planned authentication interruption remain necessary.", + "The locally built verifier and synthetic startup checks are not deployed image admission or native Kubernetes server acceptance.", + "Current source/cluster/image pinning, owner custody returns, supervisor disposition, GitOps reconciliation and real readiness/issuance/login/consumer checks remain open.", + "Issued JWTs remain valid until expiry; active connections require transport-owner termination." + ], + "knowledge_orientation": { + "version": "0.2.6", + "digest": "8d1d6a9d4d07fec7b619618de7dfe2be2254c1790f85f4198c7fe19db9751c02", + "status": "withheld/source-changed/orientation-only; current sources used" + }, + "source_commit": "276b95f6bab983a06795c26d5592b895b9a55f27", + "preparation_commit": "eba6e1fdbb2d368093cb2effd4d798f393e0482e" +} diff --git a/infra/security-flow/playwright-delivery.json b/infra/security-flow/playwright-delivery.json index 7bd3718f..252e0024 100644 --- a/infra/security-flow/playwright-delivery.json +++ b/infra/security-flow/playwright-delivery.json @@ -115,8 +115,8 @@ "message_id": "c6b4dfb0-44d5-4f12-8854-2c38ab6dc454", "responsibility": "Supported loopback/custom-scope registration outside current browser-RP type; registration and governed per-agent custody with Platform.", "accepted_task_id": "NK-WP-0050-T02", - "acceptance": "NetKingdom source ownership accepted in 5dd74df; NK-WP-0050-T01 compiler/preservation/native disposable preparation done. T02 custody integration and guarded activation todo; T03 live acceptance wait. No custody/live grant inferred.", - "source_commit": "5dd74dfbdf3fd38adb1bfc1bdc1326181435f0e9", + "acceptance": "NK-WP-0050-T01 registration preparation done. T02 progress: digest-bound private activation, conditional patch/readback and exact original-state rollback preparation verified in eba6e1f plus 276b95f collision repair; governed custody, protected executor integration and scoped live action remain open. T03 live acceptance waits.", + "source_commit": "276b95f6bab983a06795c26d5592b895b9a55f27", "source_workplan": "workplans/NK-WP-0050-playwright-consumer-registration.md" }, { @@ -187,6 +187,15 @@ "identity_acceptance": false, "custody_admitted": false, "live_activated": false + }, + { + "repo": "net-kingdom", + "commit": "276b95f6bab983a06795c26d5592b895b9a55f27", + "implementation_task": "NK-WP-0050-T02", + "accepted_scope": "Private activation patch preparation and exact original-state recovery, including reproduced effective-audience/delivery-alias collision repair; 90 focused tests and native synthetic startup checks pass.", + "custody_admitted": false, + "live_activated": false, + "identity_acceptance": false } ] } diff --git a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md index 54f27853..6f6f2fef 100644 --- a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md +++ b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md @@ -530,3 +530,17 @@ in the October 13 evidence directory. Case now links NK-WP-0050-T02 for governed custody and guarded activation, with T03 awaiting actual issuer/consumer receipts. No browser-case admission, custody grant, real identity trial or live rollout is inferred. Other identity/authenticator/transport owner returns remain missing. + +2026-10-13 registration activation preparation published in NetKingdom +`eba6e1f`: single-Recreate stop/configure/resume sequencing, native verifier pin, +private proposal digest and exact object/data/spec conditions, pod-quiescence +checks, readback and original-state rollback now have 90 passing focused tests +with no skips plus native synthetic KeyCape startup checks. Follow-up `276b95f` +refuses reproduced implicit-audience and aliased-Secret collisions; both new +regressions failed before repair and pass afterward. Pre-existing clients +and bindings survive rollback; intervening drift refuses stale replay. +NK-WP-0050-T02 is progress. The module has no live CLI or Kubernetes connection; +protected executor/recovery-state integration, admitted identity/custody, exact +current image/cluster and supervised live acceptance remain open. Receipt: +`playwright-activation-preparation.json` in the October 13 evidence directory. +No live credentials or deployments changed; this does not close consumer delivery.