the-custodian/workplans/CUST-WP-0079-deterministic-security-flow.md
2026-10-21 08:08:41 +02:00

561 lines
31 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: CUST-WP-0079
type: workplan
title: "Deterministic security flow: standing authorizations, flow report, and agent re-engagement"
domain: infotech
repo: the-custodian
status: active
owner: claude-code
topic_slug: custodian
created: "2026-10-11"
updated: "2026-10-20"
flavor: implementation
depends_on: []
state_hub_workstream_id: "ab288f92-d364-5c24-9362-aee451f266c3"
---
Follow-up to `history/20261011-netkingdom-security-progress-assessment.md`. About 80 % of the
security estate's open tasks were `wait`, and agent time went into re-reading waits and producing
evidence packets. This plan replaces that loop with (1) standing founder authorizations,
(2) deterministic reports and sync, and (3) a narrow, re-scoped coding-agent goal.
Critical path (everything else is residual until promoted):
identity (key-cape, user-engine) → authorization (access-engine + policy-nexus guardrails) →
secrets (secrets-engine over OpenBao, response-wrapped delivery) → SecurityCase execution
(ops-mason → ops-warden / ArgoCD), proven first on oidc-browser-relying-party (NK-WP-0048-T06,
KEY-WP-0038).
## Founder decision batch and hub/repo decision sync
```task
id: CUST-WP-0079-T01
status: done
priority: high
state_hub_task_id: "618b32bb-3b30-5c31-b054-65b455d62b0b"
```
2026-10-11: D1, D2, D3 resolved, plus round 2 (standing build-mode change rule; D10 MFA remainder;
D4 + D5). Recorded in `docs/decisions/2026-10-11-security-unblock-decisions.md`. 31 open hub
decisions were already resolved in repo decision logs (gate-house, kings-guard, tenant-engine,
security-canon, repo-manager) and were synced. Open hub decisions went from 61 to 22. 26 tasks were
requalified, including fixes for tasks mislabeled as human gates. 10 workplans were demoted to
residual.
## Deterministic tooling
```task
id: CUST-WP-0079-T02
status: done
priority: high
state_hub_task_id: "2764581a-ff8f-5a05-90bd-3dc6bd058ae5"
```
`scripts/security_flow_report.py` (READY / UNBLOCKED / ATTENDED / STALLED from workplan files),
`scripts/requalify_tasks.py` (apply task requalifications from a JSON plan),
`scripts/sync_resolved_decisions.py` (resolve hub decisions that repo logs already record as
resolved or accepted).
## Schedule the flow report and decision sync
```task
id: CUST-WP-0079-T03
status: progress
priority: high
state_hub_task_id: "1be0569c-221d-5925-a0ff-fd2af88e52b1"
```
2026-10-20 route change (founder interview): the Activity Core lane's remaining
cost was data transport (15 private checkouts into the cluster: publisher endpoint,
NetworkPolicy, disclosure review, receiver, storage). Founder chose the checked-in
workstation timer instead, superseding decision `8a64ba65` for T03; the Activity
Core definitions stay disabled and that lane is residual. `systemctl --user` now
works (Linger=yes). Installed `infra/security-flow/custodian-security-flow.{service,timer}`
(daily 08:00, Persistent, 10 min jitter). Founder authorized `--apply`. A manual
`systemctl --user start` succeeded (Result=success): synced SECURITY-DEC-2026-004,
wrote `~/.local/state/custodian-security-flow/{delivery,report}.json`. Closes on the
first unassisted fire with a successful journal entry.
2026-10-20 closeout: the founder accepted today's systemd-run `--apply` (same unit,
environment and state dir; Result=success) as sufficient and closed T03 before
the first timer fire. The timer's first fire (2026-10-21 ~08:03) is still checked;
a failure reopens T03.
2026-10-21 first timer fire: started 08:05:31, failed 08:05:55 (exit 1).
`sync_resolved_decisions.py` got `ConnectionResetError` from the hub forward on its
first request (workstation booted 07:24; the forward is known to drop a first
request). T03 reopened per the rule above. A manual `systemctl --user start` of the
same unit at ~09:20 succeeded. Fix: the decision read now retries connection errors
three times with backoff (message delivery POSTs are not retried; they keep their
recipient checkpoints). T03 closes on the next unassisted fire with Result=success.
Run `sync_resolved_decisions.py --apply` and `security_flow_report.py --json` daily (activity-core
schedule, or a workstation timer until activity-core has the lane). Post a hub message to the
coding agent only when UNBLOCKED or READY changed, and to the founder only when ATTENDED is
non-empty. Agents must not poll wait tasks themselves.
Implementation (2026-10-11): `scripts/security_flow_daily.py` runs both commands, includes
`the-custodian` in the default security estate, checkpoints each delivered recipient, and
notifies the coding agent only when READY/UNBLOCKED changes. Empty ATTENDED lists never
message the founder. User timer units are in `infra/security-flow/`; `make security-flow-check`
passes nine tests including interrupted delivery and retry. Live hub dry-run succeeds.
Schedule activation handoff `117e538e-da06-48b8-ba68-b82300a832e7` to `activity-core`
is attached to `case:cross-owner:CUST-WP-0079-T03:activity-core`
(`infra/security-flow/scheduling-handoff.json`); no owner acceptance or foreign dependency is
invented. Schedule activation remains pending: workstation `systemctl --user` cannot connect to its
user bus (`No data available`), so checked-in units alone do not establish daily execution.
2026-10-13 owner return: Activity Core accepted the handoff in message
`00704319-97b2-469c-977e-6168ef20b9f9`. Verified owner record
`ACTIVITY-WP-0047` (implementation, active) and committed definition
`activity-definitions/daily-security-flow.md`: daily 07:30 Europe/Berlin,
misfire skip, fixed `python3 scripts/security_flow_daily.py --apply` command,
correlation CUST-WP-0079-T03, no repository grant. Definition remains
`enabled: false`; source acceptance is complete, activation is not.
The existing coordination case now names ACTIVITY-WP-0047 as obligor. T03
remains wait until its claiming rein can reach workstation checkouts/the hub,
the owner activates the schedule, and the first unassisted fire proves completed
ops_run, report delivery and checkpoint behavior. No scheduler was enabled and
no foreign owner task was changed by this reconciliation.
## Encode the standing change rule as a policy-nexus guardrail
```task
id: CUST-WP-0079-T04
status: done
depends_on: [PNEX-WP-0006]
priority: high
state_hub_task_id: "5dd52156-09a8-5781-b288-99ae822f59a6"
```
Canon source written 2026-10-11: `canon/standards/build-mode-change-authorization_v0.1.md`
(founder-decided). Closes when PNEX-WP-0006 publishes it.
## Stop agent-authored index and sync commits
```task
id: CUST-WP-0079-T05
status: done
priority: medium
state_hub_task_id: "8a3dc219-8982-5903-9407-e1b549d4544c"
```
WORK-RECORDS.md, source inventories, publication indexes and "projection refresh" files must be
regenerated by a `make` target in a pre-commit hook or a Forgejo Action, not by agent commits.
Start with the security repos. Done when a week of git log shows no standalone index-only commits
from agents.
Implementation (2026-10-11): `scripts/check_generated_only_commit.py` checks staged files
or every commit in a revision range. Forgejo workflow `generated-commit-guard.yaml` rejects
standalone WORK-RECORDS, source-inventory, publication-index, projection-refresh,
generated briefs and explicit evidence/decision-packet commits regardless of author; a later source commit cannot hide an earlier
generated-only commit. `make generated-commit-check` provides the local hook entry point.
The CI suite covers the rejection using a real temporary git repository. Consumer generator
adoption and the required week of clean logs remain open; this task is not claimed complete.
The local guard is installed; `make generated-commit-hook` reproduces that
installation and refuses to replace a different hook. The consistency CLI has
no no-commit/no-push mode: its first invocation unexpectedly published brief-only
`ebaa38b`, retained as a failed acceptance observation. Its subsequent invocation
committed the already reviewed, staged implementation as `6fe7201`; that commit
includes source code. Future generated-only commits are rejected locally and in
CI. The full Custodian suite passes 77 tests.
The default flow report now includes Custodian and activity-core, both required
by the renewed critical path. Cross-owner completion can therefore unblock the
platform activation task without an agent polling its wait body. Human gates
also retain their intervention note in the generated report instead of a blank
reason. CLI regression checks cover the actual owner completion transition and
the default Custodian lane.
The report also excludes todo/progress tasks with unresolved explicit task
dependencies, an owner gate or a human flag from READY. They remain visible
under DEPENDENT or ATTENDED, without agent polling of wait bodies. Regression
tests prove that owner completion admits the successor and that an unknown
predecessor or stale progress label cannot produce readiness. This is queue
qualification, not evidence that the corresponding live work has finished.
`scripts/install_shared_generated_guard.py` now checks or installs the guard in
the repository's already configured shared hook directory. It preserves existing
hook routing and other hooks, and refuses a differing or redirected pre-commit
hook. Real temporary-repository tests prove rejection and source-change acceptance.
The missing shared guard was installed for the existing repo-manager hook path;
the week's fleet evidence and generator adoption still remain open.
The generated attended list now retains unresolved ordered dependencies. An owner token session following the first SecurityCase can therefore be listed as a future attended act without implying it is ready to run now. CLI regression coverage checks this boundary.
2026-10-12 closeout: `make generated-commit-hook` now recognizes the existing
shared hook and preserves its routing and other owner hooks. A real Git/Make
regression test checks repeat installation and rejection of a generated-only
commit. Local implementation is complete; T05 remains waiting for fleet generator
adoption and the originally required week of clean history. Neither one day of
observations nor this local repair satisfies that acceptance condition.
Session closeout reviewed all three open Custodian plans. CUST-WP-0071 and
CUST-WP-0073 remain blocked on their existing named owner/founder returns.
CUST-WP-0079 is now blocked because all remaining tasks wait on scheduling-owner
acceptance, policy publication, fleet/time-based acceptance or attended actions.
No tasks or workplans were added, and CUST-WP-0076 remains finished.
The cross-repo critical-path goal was paused by the operator; this bounded
closeout does not resume it or claim native estate completion.
## Attended window #1
```task
id: CUST-WP-0079-T06
status: done
priority: high
state_hub_task_id: "e3da807f-9a6e-513f-82dc-3714a489e7bf"
```
2026-10-20: attended window opened with the founder. RPF-WP-0044-T04 prerequisites
re-verified and executor contract sealed by a railiance-platform worker (`918656f`,
runbook `docs/runbooks/rpf-wp-0044-t04-attended.md`, contract valid to 2026-10-27).
Acts presented: USER-WP-0026-T03 positive readback (platform-root), USER-WP-0028-T03
U08 recovery from step 6.3, RPF-WP-0044-T04 login + fixed executor.
2026-10-20 closeout. All three attended acts were completed by the founder:
- USER-WP-0026-T03: the positive readback for platform-root shows "Informed Decision - Available" (user-engine `cd33bed`).
- USER-WP-0028-T03: U08 recovery and TOTP re-enrollment passed, so U05–U08 are accepted. F3 wording remains with the owner (`9787cd7`).
- RPF-WP-0044-T04: login and executor reached `delivered_not_adopted` (railiance-platform `72bba8e`).
The Argo adoption sync and verifier are follow-on owner steps in RPF-WP-0044 and are not attended acts. T06 is done.
## Re-engage the coding agent with the renewed goal
```task
id: CUST-WP-0079-T07
status: done
priority: high
state_hub_task_id: "91ec924c-b305-5a63-925d-087a3b927d60"
```
Replace the Sol goal with the renewed text in the assessment history file (section "Renewed
goal"). Re-engage now for the READY lane. It does not depend on T06.
Completed 2026-10-11: the renewed critical-path goal is active in thread
`01a126e1-76f8-7643-8cf3-e93336539ade`; its attached text was read before
execution. Work resumed from READY/UNBLOCKED, with three workers pinned to
eligible workplans and the accepted build-mode authorization in force. This
closes re-engagement only, not the live critical-path goal.
## Current owner-source audit — 2026-10-19
Activity Core source remains disabled (`daily-security-flow`, ACTIVITY-WP-0047
T02/T03 wait), so neither checked-in scheduling nor clean source establishes an
unassisted fire. Policy Nexus PNEX-WP-0006 remains blocked for founder-batch
publication and its source-inventory gate; its eight guardrail tests pass.
No privileged activation or policy publication was attempted.
The fixed seven-day local Git window `[2026-10-12T00:00:00+02:00,
2026-10-19T00:00:00+02:00]` contains 498 commits across all 15 repositories in
`security_flow_report.DEFAULT_REPOS`. Applying the existing generated-only
classifier to each commit found zero standalone generated-only commits.
The receipt `docs/evidence/2026-10-19-security-flow-week-history.json` records
repository HEADs and counts. This proves the observed local history window;
it does not prove unobserved remote branches or fleet generator adoption.
The shared repo-manager pre-commit hook rejects generated-only commits and
scans staged secrets, but does not regenerate indexes. T05 therefore remains
open for actual Make/hook or Forgejo generator adoption. Reuse the existing
State Hub `scripts/consistency_check.py` work-record rendering functions rather
than the auto-committing consistency CLI inside a hook; any integration must
preserve unstaged edits and generate from the staged source snapshot.
Scope discovery is now explicit and the three relevant owner checkouts are
clean after source-only commits: policy-nexus `19b65d5` adds SCOPE and links it
from its existing capability declaration; repo-manager `027b54e` documents
sync, shared-hook boundaries and the missing generator adoption; activity-core
`70ff241` documents the disabled fixed-command consumer and execution boundary.
These are source capabilities, not runtime publication or authorization claims.
T06's stale blockers were corrected from owner workplans: the coulombcore check
was already complete, and KeyCape's attended TOTP preview completed October 17.
Actual U08 recovery remains with USER-WP-0028-T03; a successful preview is not
factor-disable/re-enrollment acceptance.
T05 preparation now includes `scripts/generate_staged_work_records.py` and
`make generated-work-records` / `make generated-work-records-check`. The adapter
reuses the State Hub renderer against staged Markdown blobs, refuses conflicts,
symlink sources and unstaged generated-file edits, and stages only the generated
index. It never invokes the consistency CLI, hub, commit or push. Seven regression
tests cover actual owner rendering, staged-versus-unstaged source isolation,
generated-file preservation, read-only checking, idempotency and symlink refusal;
these and the existing generated guard tests pass (ten tests). Shared-hook
activation and fleet Make target adoption are still outstanding; the adapter
alone is not evidence that repository indexes are generated during commits.
Review refinement: generation requires `--repo-slug`, so worktrees and renamed
checkouts retain canonical identity. Each explicit renderer checkout is loaded
in a fresh subprocess, preventing cross-checkout module-cache reuse. Tests prove
both boundaries. Usage and adoption limitations are documented in
`docs/staged-work-record-generation.md` and the local SCOPE capability; no shared
hook routing was changed.
### T05 generator adoption — 2026-10-19
T05 is progress and the workplan active because authorized source adoption is
underway. The shared repo-manager hook now composes the original generated-only
guard, opt-in staged generator and unchanged exact-scope secret scanner. The
Custodian's separate local scanner hook was upgraded with the reviewed installer
(`changed: true`); its routing and other hooks were preserved. Opt-in is explicit
in `.generated-work-records.json`, with a dedicated staged Make recipe. Ordinary
Makefiles and `.env` includes are not loaded by the hook. Recipe content remains
trusted source, not an arbitrary-code sandbox.
Actual owner commits exercised the hook: activity-core `8a7275c` found its index
current; policy-nexus `c89364d` and repo-manager `05046fb` regenerated and included
WORK-RECORDS with the adoption source. All three checkouts were clean after their
commits, and the latter two retained successful secret scans. Subsequent owner
work may change those checkouts independently.
Twenty-one adapter/shared-hook/guard tests pass, including preservation of
partially staged source and unrelated staged briefs. Real `git commit --only`
exposed Git's temporary-index behavior; the adapter now refuses regeneration in
an alternate index before mutation. Pre-generating against normally staged
sources and including WORK-RECORDS in the partial commit passes with unrelated
staging intact. Instructions are in `docs/staged-work-record-generation.md`.
This is WORK-RECORDS adoption in three provider repos plus Custodian preparation,
not fleet completion. Remaining surfaces include the other security repositories,
hub-derived `.custodian-brief.md`, policy-nexus source inventory (whose authored
configuration/dispositions must be retained), and net-kingdom's generated
coordination-frame receiver through `tools/coordination-frame/render.py`.
Historic evidence inventories are not recurring generator outputs. T05 stays
open until those applicable owner generation paths and fleet acceptance are
verified; the independent schedule, publication and attended gates remain open.
### Fleet WORK-RECORDS adoption and source cleanup — 2026-10-19
The staged WORK-RECORDS lane is now adopted across every repository in the
15-repository default security report estate, plus the relevant implementation
providers. Each adopted repository declares its canonical slug, isolated Make
recipe and SCOPE boundary. Real commit hooks checked/rendered the staged index;
shared generated-only rejection and existing exact-scope secret scans remained
in force. No native runtime, credentials, public policy or schedule activation
was performed by this adoption.
All 25 provider checkouts were clean at verification (3 earlier adopters, 11
security-fleet adoptions, 4 isolation providers and 7 sizing providers). Current
source revisions:
| Repository | Commit |
| --- | --- |
| net-kingdom | `4c7f32a` |
| railiance-platform | `b06d1f0` |
| access-engine | `7eb4e22` |
| secrets-engine | `510d292` |
| ops-mason | `3457ecf` |
| key-cape | `5defa33` |
| user-engine | `db05c13` |
| tenant-engine | `f94bb5d` |
| gate-house | `c7d47f8` |
| kings-guard | `5e4942f` |
| rapp-policy-nexus | `ff41754` |
| activity-core | `7490eb8` |
| policy-nexus | `c89364d` |
| repo-manager | `05046fb` |
| ops-warden | `6ed0e9e` |
| railiance-cluster | `4604faf` |
| railiance-forge | `9aa2ac6` |
| railiance-apps | `a6fe0ab` |
| resource-framework (`resource-control`) | `0754009` |
| rapp-telemetry | `6015b54` |
| railiance-telemetry | `d089325` |
| vergabe-watch (`vergabe-teilnahme`) | `17429f8` |
| railiance-infra | `5094c30` |
| glas-harness | `579cefd` |
| rein-codex (`rein-aharness`) | `fb14c38` |
The first fifteen provider rows were rechecked directly after the final commit;
the additional sizing/isolation rows carry their worker completion receipts and
root's independent checkout verification. Custodian's own source adoption was
committed separately and uses its reviewed local scanner-hook composition.
Dirty generated indexes were inspected and original snapshots retained under
`/tmp/cust79-fleet-adoption/<repo>/`. Platform, Access and King's Guard originals
matched the staged owner renderer exactly. NetKingdom and Secrets originals
were stale row subsets of current source; regeneration added the missing source
records. User Engine's original reflected its pending source handoff, which was
reviewed and committed with the derived index rather than discarded.
Existing unfinished source was inspected and retained: Ops Mason's lock matched
its current pyproject (`uv lock --check --offline`) and all 260 tests passed;
its lock is now committed. Rapp Policy Nexus passed its nine packaging tests and
Helm lint. USER-WP-0035-T02's pending owner handoff was checked against current
caller/receiver/provider/portal code and retained with dated source hashes.
EMAIL-IN-0001 is durable in email-connect `994db7d` (clean), and NET-IN-0005 is
included in `4c7f32a`. Both remain owner preparation requests; they do not prove
setup-mail capability or runtime delivery. NetKingdom's pending cadence capture
receipts were preserved (3 events, 3 receipts, 588 inventory observations); their
record still says independent receiver readback is pending. No current process
or cadence acceptance is inferred from those historical files.
User Engine's typo-suffixed `.claude/settings.local.json.` was inspected and
preserved inactive at
`/home/worsch/.local/state/custodian-preserved/user-engine/settings.local.json.inactive-2026-10-19`,
SHA256 `b70496e3978a7e45304ad6e2042f81953bc8d6ac518aa82fcab36c4e5c754243`.
It was not renamed to active settings or used to grant permissions; the location
and hash receipt is committed with the source reconciliation.
State Hub supplied a separate strict rendering-only brief CLI in `09803dc`,
with identifier follow-up `f8f9cd9` verified in publication/projection and
published capability declaration `eac38b7`. Owner
validation passed 17 focused tests and 168 consistency tests on rerun; initial
combined-suite database teardown errors are retained in the owner/root report.
The CLI does not perform Git operations or Hub writes. Attempts to refresh the
five pending security briefs failed closed at `/repo-goals` or `/repos/<slug>`;
no replacement snapshot was written. Their existing generated deltas were
reviewed against source, retained with their original October 15–18 timestamps,
and committed alongside meaningful adoption source. They are historical
orientation, not fresh Hub readback. Originals remain in the preservation
snapshot. The brief's deliberate Markdown hard-break whitespace was retained.
T05 remains progress: WORK-RECORDS adoption does not establish automation for
hub-derived briefs, Policy Nexus source inventory, or NetKingdom's generated
coordination-frame receiver. Those owner generator families and recurring
execution remain to be implemented/verified without changing authored source
inventory dispositions. T03, T04 and T06 retain their independent schedule,
publication and attended acceptance gates. No new owner acceptance is inferred
from clean checkouts or the earlier clean seven-day Git window.
State Hub's five older metric snapshots remain intentionally dirty after owner
review; they were not included in the 25 clean provider claim. Custodian's
inherited NetKingdom assessment receipts also remain outside these owner cleanup
commits. Neither source adoption nor clean provider worktrees authorizes deleting
unrelated observations.
### Local brief policy and preserved metric snapshots — 2026-10-19
The operator selected local generated briefs and removal of tracked snapshots.
State Hub's renderer now omits Git operations for brief refreshes, including the
ordinary consistency path. The migration preserves the existing local bytes,
adds root-anchored ignores and removes only the tracked snapshot. No offline
orientation file is deleted. The explicit strict brief CLI remains available;
failed fresh reads preserve prior local orientation. This supersedes the earlier
plan to couple hub-derived brief snapshots to source commits.
The five State Hub legacy-meter snapshots reviewed in the preceding session are
now preserved outside its checkout at
`/home/worsch/.local/state/custodian-preserved/state-hub/legacy-meter-20261019/`.
`manifest.json` records every original path, SHA256 and tracked-baseline hash.
The tracked Oct14 baseline was restored and the four untracked copies removed
only after exact archive verification. These are historical observations, not
scheduled-execution or retirement acceptance. State Hub was clean after this
archive and before the local-brief source migration. This updates the earlier
intentionally-dirty observation without discarding evidence or committing a
generated-only packet. Custodian's inherited NetKingdom receipts remain intact.
### T05 acceptance audit — 2026-10-19
T05 is done. The earlier full seven-day local history audit covered 498 commits
across the 15-repository default estate with no standalone generated-only
commits. Staged WORK-RECORDS generation is adopted in all those repositories
and the additional providers. The concrete remaining recurring artifacts were
rechecked against tracked source paths, rather than inferred from filenames:
- NetKingdom `generated/coordination-frame/approval-engine-receiver.json` now
derives from indexed owner sources through the local commit recipe (`bde143e`).
Eleven tests cover the existing compiler plus partial staging, sibling
preservation, target edits, symlinks and alternate-index refusal. The hook
never rewrites sibling repos. Its subsequent local-brief migration is `1bd869c`.
- Policy Nexus's generated release inventories and manifests already run in the
scheduled Forgejo build. Its tracked `source-inventory.json` and config carry
authored dispositions and must not be auto-refreshed as disposable output.
`5a6e78f` adds a non-destructive staged review utility (65 tests), not a second
versioned inventory. Publication remains a separate T04 gate: two newly
discovered documents still need explicit dispositions and the founder's
public-release batch. This audit does not claim a fresh scheduled release.
- Brief snapshots are deliberately no longer Git artifacts, per operator choice.
State Hub `39b51a2` removes the renderer's commit path; all 185 focused and
consistency regression tests pass. Its owner sync returned applied at that
exact revision. Local brief preservation was checked with hashes during the
provider migration; the files remain available and ignored.
The default-estate path audit found no additional recurring source inventory,
publication index or projection refresh output lacking its owner generation
path. Dated historical receipts are retained observations, not refresh jobs.
This closes generation and local-history acceptance only. T03, T04 and T06
remain waiting on their named runtime/publication/attended gates, so this
workplan is blocked rather than finished. No residual work is concealed by T05.
Daily/weekly executor source is committed in Activity Core `4ae00fc`, with 57
focused bounded-operation/evidence/definition tests passing. It reuses the
existing ADR-007 fixed-command stage, suppresses raw command output, validates
trusted bindings before subprocess execution and returns compact hash/count
receipts. The selected commands emit no agent ops_run or model call. Both
schedules remain disabled. ACTIVITY-WP-0047 records the replacement receipt
contract and runtime acceptance gates; the corresponding Custodian handoff and
weekly-report documentation now consume that contract. NetKingdom's required
consistency pass synced 64/64 bindings with zero automation/assessment failures
(27 existing warnings, 5 informational findings); its brief refreshed locally
without any brief commit.
Runtime review refinement: Activity Core `0319fe8` retains the concrete proposal
in `docs/custodian-runtime-binding-proposal.md`. It pins the four stdlib owner
scripts from Custodian `60d893a` (30,169 bytes), source/state/fleet paths, direct
Hub service semantics, paused verification and checkpoint-preserving rollback.
Direct Kubernetes ConfigMap projection is unsuitable because its symlinks are
correctly refused by the executor; image-baked files or a hash-verified init copy
are the two existing delivery patterns. Existing worker vs dedicated placement,
fleet publisher/freshness and state retention/backup acceptance remain owner
inputs. They were requested without enabling schedules or claiming deployment
approval. This is source preparation for T03, not a new scheduler or first-fire
proof. Activity Core remained clean after the documentation commit.
## Owner delivery resumed after interview — 2026-10-19
Decision `8a64ba65-1068-409c-86f8-b9414b29b7b4` selects the existing Activity
Core worker with pinned owner scripts and private retained state. T03 is progress
for the delegated Activity Core/Repo Manager source packaging and snapshot
publisher work. Both definitions remain disabled pending the exact reviewed
implementation and existing activation conditions. No second worker/scheduler is
needed by this selected design. Routine live changes use the existing standing
build-mode rule only when its concrete review, rollback, abort-owner and receipt
conditions hold; access/secret scope, spend and public-publication exclusions
remain in force.
Policy Nexus `8af92bf` resolves the two source-discovery review rows as explicit
metadata-pending under existing inventory rules. No publication mappings or
foreign canon changed. Its 65 tests,186-source audit (74 published/94 pending),
local immutable release verification and currency checks pass. T04 still needs
the founder's existing public-release disposition for the build-mode standard
and derived JSON; the two unrelated pending documents are not part of that ask.
### Exact publication approved; execution pending verification
Founder approved the prepared publication and deployment in async reply
`call_5157a09329d34746a3fdf857d5a47b8d`, item 0. The immutable packet is
`docs/changes/CUST-WP-0079/policy-publication-r1/PLAN.md`, hashlist SHA256
`309ef01650b65bc6b28e86daad9b2835a242631cf60e0896e849461bb917504f`.
The supervision record binds original and approved revision 1. It authorizes
image `214b122c3d175563f114552fa1826dac9642433be019c736c3265d0a3ef379f1`,
paired release hashes, exact hosting changes and rollback to verified live
revision 9. Nine rendered resources passed server dry-run; only image/release
metadata changes. The owner is executing the approved sequence after fresh
preconditions. T04 remains open until public and native verification succeeds.
Activity Core `fed119a` bakes the pinned commands and enforces required input
admission; `3b25aea` selects an immutable snapshot through a protected descriptor
under a fixed retained mount. The latter has 76 focused passing tests. This
avoids a deployment patch for every new snapshot. The existing core-hub publisher
has Forge custody, but no accepted file-transport path to Activity Core exists.
An opt-in endpoint, exact 15-repository disclosure policy, narrowly selected
network access and receiver are being prepared. Existing Forge read authority
does not authorize this new downstream disclosure. No new credential mount or
live access change has been made; both job definitions remain disabled.
Publication verified at 13:36:20Z on 2026-10-19: one atomic upgrade deployed the
exact approved artifact as Helm revision 10, Ready 1/1. Public release hashes
and source set match; all 150 canonical/revision pages and artifacts are byte
equal to the candidate, with 74 documents and the previous 73 source digests
unchanged. The standard and derived JSON are live. T04 is done. Native/public
receipts are in `docs/changes/CUST-WP-0079/policy-publication-r1-execution/`.
Two verifier-only date/label assertion failures are retained as refinements;
the corrected full proof passed without artifact changes or rollback. No new
vulnerability scan or native CI success is inferred from deployment acceptance.