From bb6198407e7dde711c01675269fc83e1a4c99c8a Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 4 Oct 2026 13:24:34 +0200 Subject: [PATCH] Prepare the STATE-WP-0094 production-steps sitting (four memos, unposted) Hub decision 7b19de6c-72a1-409e-89a9-ec3ac09c03fd stays pending; the batch never resolves it. Co-Authored-By: Claude Opus 5.5 Assistant: claude-code Assistant-Model: opus Assistant-Process: 692292@bnt-lap001 Assistant-Session: 89c7d8e8-e1b3-47eb-9411-a0ab227fca2f --- .../2026-10-04-state-hub-wp0094/OPERATOR.md | 59 +++++++++++++++ .../approval-create-intents.json | 73 +++++++++++++++++++ ...ness-runner-deploy-trial-e77f8b4.memo.json | 53 ++++++++++++++ ...ness-runner-deploy-trial-e77f8b4.packet.md | 39 ++++++++++ ...ess-schedule-enable-retire-sweep.memo.json | 53 ++++++++++++++ ...ess-schedule-enable-retire-sweep.packet.md | 33 +++++++++ .../provisioning/index.json | 58 +++++++++++++++ ...owner-return-pickup-plan-b2c6c56.memo.json | 53 ++++++++++++++ ...owner-return-pickup-plan-b2c6c56.packet.md | 37 ++++++++++ ...b-edge-receiving-rollout-c287ed8.memo.json | 53 ++++++++++++++ ...b-edge-receiving-rollout-c287ed8.packet.md | 43 +++++++++++ .../2026-10-04-state-hub-wp0094/sitting.json | 21 ++++++ 12 files changed, 575 insertions(+) create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/OPERATOR.md create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/approval-create-intents.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.memo.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.packet.md create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.memo.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.packet.md create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/index.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.memo.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.packet.md create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.memo.json create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.packet.md create mode 100644 docs/batches/2026-10-04-state-hub-wp0094/sitting.json diff --git a/docs/batches/2026-10-04-state-hub-wp0094/OPERATOR.md b/docs/batches/2026-10-04-state-hub-wp0094/OPERATOR.md new file mode 100644 index 0000000..f3496f0 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/OPERATOR.md @@ -0,0 +1,59 @@ +# STATE-WP-0094 production steps — operator packet + +Hub decision: `7b19de6c-72a1-409e-89a9-ec3ac09c03fd` (pending). The founder +answers through informed-decision. This packet never resolves that decision +(`resolves: never`). Review group: `net-kingdom-admins`. +Surface, after the steps below: https://decisions.coulomb.social/ + +An agent prepared this sitting. It may not accept, decline, or seal. Only the +human binds. Each memo is one question; approve-all is forbidden. + +| # | Memo | Question | Required acknowledgement | +|---|---|---|---| +| 1 | `state-hub-edge-receiving-rollout-c287ed8` | Deploy State Hub c287ed8 to railiance01? | `deploy-only` | +| 2 | `owner-return-pickup-plan-b2c6c56` | Approve owner-return pickup plan, definition, grant and one gated trial? | `preconditions-open` | +| 3 | `freshness-runner-deploy-trial-e77f8b4` | Deploy the freshness runner and run up to three `--limit 3` trials? | `no-schedule` | +| 4 | `freshness-schedule-enable-retire-sweep` | Enable the freshness schedule and retire the legacy sweep? | `after-clean-trials` | + +Packet hashes are in `provisioning/index.json` (sha256 of each `.packet.md`). +Order matters: 2 and 4 depend on 1 and 3 being carried out cleanly. + +Current state at preparation (2026-10-04): State Hub Helm revision 72, +`main-5dd3df9`. Nothing in this batch has been deployed, scheduled, posted, +admitted or loaded. + +## What you run + +1. Approval Engine tunnel, separate terminal: + `kubectl -n approval-engine port-forward svc/approval-engine 18281:8080` +2. Create the four native approvals in your own terminal (KeyCape OIDC/MFA + opens in the browser). Do not hand this command to an agent. + + ```bash + WARDEN_ROUTING_CATALOG=/home/worsch/ops-warden/registry/routing/catalog.yaml \ + BAO_ADDR=http://127.0.0.1:18200 VAULT_ADDR=http://127.0.0.1:18200 \ + warden access informed-decision-sitting-requester-login --exec -- \ + /home/worsch/informed-decision/tools/create_sitting_approvals.sh \ + --sitting 2026-10-04-state-hub-wp0094 \ + --receipt 2026-10-04-state-hub-wp0094-approval-create.json --expect 4 + ``` + Read warden's printed line, not its exit code. Do not retry when a receipt + was not retained. +3. Exact-record admission and store load: a new access-engine policy version + that admits exactly these four memos, plus the review runtime ConfigMap, + following the v9 pattern in `../2026-10-04-emergent-profile/DEPLOY-v9.md`. + This is its own deploy and needs your separate "yes, deploy it". +4. Answer each memo at the surface with fresh MFA. + +## After an answer + +Agents act only on an accepted memo, only within its packet, and record the +evidence named there. A declined or returned memo stops that step. The hub +decision is resolved only once all four memos have an answer. + +## Must not + +- Paste or display any credential value +- Let an agent accept, decline, or seal +- Call `POST /v1/memos` or resolve the hub decision from this packet +- Treat approval of one memo as approval of another diff --git a/docs/batches/2026-10-04-state-hub-wp0094/approval-create-intents.json b/docs/batches/2026-10-04-state-hub-wp0094/approval-create-intents.json new file mode 100644 index 0000000..734b200 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/approval-create-intents.json @@ -0,0 +1,73 @@ +{ + "kind": "informed-decision-approval-create-intents", + "sitting_id": "infd-sitting-2026-10-04-state-hub-wp0094", + "status": "not-posted", + "posted": false, + "requester_client": "informed-decision-sitting-requester", + "human_control": true, + "pdp_path": false, + "required_count": 4, + "note": "Intents only. Digests are computed by approval-engine at create; do not invent them here. This file does not submit the memos or resolve hub decision 7b19de6c-72a1-409e-89a9-ec3ac09c03fd.", + "intents": [ + { + "memo_id": "state-hub-edge-receiving-rollout-c287ed8", + "create_client": "informed-decision-sitting-requester", + "binding": { + "action": "accept", + "actor": "informed-decision", + "principal": "state-hub", + "purpose": "Production rollout of tested source; rollback is helm rollback to revision 72 without schema downgrade.", + "target": { + "id": "state-hub:source:c287ed82594313394ca8e67ce40714c90e744af6", + "type": "service-release", + "system": "state-hub" + } + } + }, + { + "memo_id": "owner-return-pickup-plan-b2c6c56", + "create_client": "informed-decision-sitting-requester", + "binding": { + "action": "accept", + "actor": "informed-decision", + "principal": "activity-core", + "purpose": "Plan approval plus one gated trial; the definition stays disabled and wakeups never clear waits.", + "target": { + "id": "activity-core:source:b2c6c5613218dea9dbaef303aff22a8d1b07f074:owner-return-pickup", + "type": "activity-plan", + "system": "activity-core" + } + } + }, + { + "memo_id": "freshness-runner-deploy-trial-e77f8b4", + "create_client": "informed-decision-sitting-requester", + "binding": { + "action": "accept", + "actor": "informed-decision", + "principal": "repo-manager", + "purpose": "Deployment and limited data-writing trials; no schedule.", + "target": { + "id": "repo-manager:source:e77f8b457647ff23697e45a74615edde5f42d39d", + "type": "service-release", + "system": "repo-manager" + } + } + }, + { + "memo_id": "freshness-schedule-enable-retire-sweep", + "create_client": "informed-decision-sitting-requester", + "binding": { + "action": "accept", + "actor": "informed-decision", + "principal": "activity-core", + "purpose": "Recurring schedule activation after clean trials, and permanent retirement of the legacy sweep.", + "target": { + "id": "activity-core:definition:repo-manager-bounded-freshness:b2c6c5613218dea9dbaef303aff22a8d1b07f074", + "type": "activity-schedule", + "system": "activity-core" + } + } + } + ] +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.memo.json b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.memo.json new file mode 100644 index 0000000..635f5db --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.memo.json @@ -0,0 +1,53 @@ +{ + "id": "freshness-runner-deploy-trial-e77f8b4", + "version": 1, + "question": "Deploy the repo-manager bounded freshness runner (e77f8b4) to the Activity Core worker and run up to three --limit 3 trial fires?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Deployment and limited data-writing trials; no schedule.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Pending authenticated reviewer", + "role": "reviewer", + "identifiers": [] + }, + "target": { + "id": "repo-manager:source:e77f8b457647ff23697e45a74615edde5f42d39d", + "kind": "service-release", + "label": "rmgr freshness runner", + "environment": "production", + "requires_new_bind": true + }, + "justification": null, + "terms": null + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "freshness-runner-deploy-trial-e77f8b4-packet", + "label": "Change, evidence, rollback and limits", + "hash": "sha256:2873f6deadd938ec07e1a4d5f314f8dbf456a00893d06cf89ce7eecb14bf9985" + } + ], + "highlights": [ + { + "id": "no-schedule", + "item_id": "freshness-runner-deploy-trial-e77f8b4-packet", + "locator": { + "kind": "work_record", + "workplan": "RMGR-WP-0020", + "task": "RMGR-WP-0020-T04" + }, + "note": "Trial fires write projections through the normal reconcile endpoint; no schedule is enabled by this answer and packaging is shown before execution.", + "required_ack": true, + "severity": "critical" + } + ], + "locale": "en", + "ui_release": "informed-decision@0.2.0", + "approval_id": null, + "approval_binding_digest": null, + "sealed": false +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.packet.md b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.packet.md new file mode 100644 index 0000000..f647205 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-runner-deploy-trial-e77f8b4.packet.md @@ -0,0 +1,39 @@ +# Deploy the bounded freshness runner and run limited trials (RMGR-WP-0020-T04) + +Approve deploying repo-manager e77f8b457647ff23697e45a74615edde5f42d39d +(rmgr freshness run) for use by the Activity Core worker, and up to three +operator-triggered fires with --limit 3, plus dry runs. + +What the runner does: picks the stalest repositories, skips repositories whose +Forge HEAD equals their last successful receipt, and calls the existing +POST /repos/{slug}/work-record-projection/reconcile for the immutable Forge +commit. It never reads a checkout, never uses --all --remote or the sweep +endpoints, never forces past a refusal, and writes no receipt unless the hub is +verified as the primary on railiance01. Receipts are an append-only JSON Lines +file (repo-manager.freshness-receipt.v1). + +What deployment includes: +- Packaging rmgr onto the Activity Core worker (method still to be chosen and + shown in the rollout document before execution). +- A persistent volume for the receipt file. +- A read-only Forgejo token routed through warden route/OpenBao; no secret is + placed in Git, the hub or this memo. +- The code-reviewed Activity Core bounded operation repo_manager_freshness + (activity-core b2c6c5613218dea9dbaef303aff22a8d1b07f074): fixed command line, + limit 1 to 12, max_seconds 1 to 270, no retry, 300 s timeout, stores counts only. + +Evidence: 226 repo-manager tests pass; ruff clean on changed files. A read-only +dry run against the primary verified the hub, saw 141 repositories and planned +clay-borg, python-snake, repo-scoping, shard-wiki, tele-mcp, citation-work. +Activity Core reads the runner's results[] (fixed in b2c6c56; 35 tests pass). + +Stop conditions: a receipt from an unverified primary, any checkout read, a fire +exceeding max_seconds twice, or any refusal pattern not explained by known holes +(RMGR-WP-0019-T03 duplicate projections, RMGR-WP-0014/0015 refusals). + +Rollback: remove the operation from the worker; receipts are kept; projections +are idempotent per commit, so no data rollback is needed. + +Alternatives: approve deploy and trials; approve dry runs only; return; decline. +This answer does not enable any schedule and does not resolve hub decision +7b19de6c-72a1-409e-89a9-ec3ac09c03fd. diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.memo.json b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.memo.json new file mode 100644 index 0000000..923017d --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.memo.json @@ -0,0 +1,53 @@ +{ + "id": "freshness-schedule-enable-retire-sweep", + "version": 1, + "question": "Enable the repo-manager-bounded-freshness schedule and retire the paused state-hub-consistency-sweep definition?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Recurring schedule activation after clean trials, and permanent retirement of the legacy sweep.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Pending authenticated reviewer", + "role": "reviewer", + "identifiers": [] + }, + "target": { + "id": "activity-core:definition:repo-manager-bounded-freshness:b2c6c5613218dea9dbaef303aff22a8d1b07f074", + "kind": "activity-schedule", + "label": "Bounded freshness schedule", + "environment": "production", + "requires_new_bind": true + }, + "justification": null, + "terms": null + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "freshness-schedule-enable-retire-sweep-packet", + "label": "Change, evidence, rollback and limits", + "hash": "sha256:8389b3fbf7b4b5267b7ed9f8ad0381c88600181f112148736e9e81a4df579c5c" + } + ], + "highlights": [ + { + "id": "after-clean-trials", + "item_id": "freshness-schedule-enable-retire-sweep-packet", + "locator": { + "kind": "work_record", + "workplan": "RMGR-WP-0020", + "task": "RMGR-WP-0020-T04" + }, + "note": "Only after memo 3 trials completed without a stop condition; retirement removes the legacy --all --remote path.", + "required_ack": true, + "severity": "critical" + } + ], + "locale": "en", + "ui_release": "informed-decision@0.2.0", + "approval_id": null, + "approval_binding_digest": null, + "sealed": false +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.packet.md b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.packet.md new file mode 100644 index 0000000..18130bb --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/freshness-schedule-enable-retire-sweep.packet.md @@ -0,0 +1,33 @@ +# Enable the bounded freshness schedule and retire the legacy sweep (RMGR-WP-0020-T04/T05) + +Approve setting the Activity Core definition repo-manager-bounded-freshness +(activity-core b2c6c5613218dea9dbaef303aff22a8d1b07f074, ACTIVITY-WP-0044-T03) +to enabled: true, and formally retiring the paused state-hub-consistency-sweep +definition (enabled: false since RMGR-WP-0005-T11). + +Only after memo 3's trial fires completed without hitting a stop condition and +their receipts are recorded as evidence. + +Schedule: cron 40 */2 * * * UTC, misfire skip, limit 6, max_seconds 240. This +rotates the 141 active repositories in about two days, against a 48 h target. + +Why: on 2026-10-04 only 35 of 141 repositories (25 %) had synced within 24 h; +median age 109 h, p90 292 h, maximum about 39.5 days. No supported schedule +exists and nothing records per-repository source commits or failures +(repo-manager docs/evidence/2026-10-04-freshness-coverage.md). + +After two days, the evidence is re-measured and handed back to STATE-WP-0094-T05: +runner revision, active definition, per-repository commit, last successful and +failed receipts, measured freshness window. Coverage holes stay listed. + +Stop and disable conditions: as in memo 3, plus any fire overlapping the next. + +Rollback: set enabled: false; nothing else to undo. + +Retiring the legacy sweep means its definition is removed or marked retired, so +the --all --remote path cannot be re-enabled by a values change. ADR-002 already +forbids its checkout reads. + +Alternatives: approve both; approve the schedule but keep the legacy definition +paused; return; decline. This answer does not resolve hub decision +7b19de6c-72a1-409e-89a9-ec3ac09c03fd. diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/index.json b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/index.json new file mode 100644 index 0000000..fbd4561 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/index.json @@ -0,0 +1,58 @@ +{ + "kind": "informed-decision-batch", + "id": "infd-batch-2026-10-04-state-hub-wp0094", + "review_group": "net-kingdom-admins", + "status": "draft-unsigned", + "submitted": false, + "one_question_per_memo": true, + "approve_all_forbidden": true, + "agent_disposition_forbidden": true, + "hub_decision": "7b19de6c-72a1-409e-89a9-ec3ac09c03fd", + "resolves_hub_decision": "never", + "ordinal": [ + { + "n": 1, + "memo_id": "state-hub-edge-receiving-rollout-c287ed8", + "workplan": "STATE-WP-0094", + "task": "STATE-WP-0094-T05", + "question": "Deploy State Hub c287ed8 (source-owned dependency-edge receiving, paginated C-25, additive migration) to railiance01?", + "memo": "state-hub-edge-receiving-rollout-c287ed8.memo.json", + "packet": "state-hub-edge-receiving-rollout-c287ed8.packet.md", + "packet_hash": "sha256:7fbc4b37d513e711cf1b62e393f2f060df378975efab4d11473fd8b1567cd0dd", + "required_highlight": "deploy-only" + }, + { + "n": 2, + "memo_id": "owner-return-pickup-plan-b2c6c56", + "workplan": "ACTIVITY-WP-0043", + "task": "ACTIVITY-WP-0043-T04", + "question": "Approve the owner-return pickup plan, definition and repository grant, and one single-repository trial once its preconditions are evidenced?", + "memo": "owner-return-pickup-plan-b2c6c56.memo.json", + "packet": "owner-return-pickup-plan-b2c6c56.packet.md", + "packet_hash": "sha256:1b5761484c3100627b4e3148c24d0d9e374d42b2aaa20a00fc54191ed801269e", + "required_highlight": "preconditions-open" + }, + { + "n": 3, + "memo_id": "freshness-runner-deploy-trial-e77f8b4", + "workplan": "RMGR-WP-0020", + "task": "RMGR-WP-0020-T04", + "question": "Deploy the repo-manager bounded freshness runner (e77f8b4) to the Activity Core worker and run up to three --limit 3 trial fires?", + "memo": "freshness-runner-deploy-trial-e77f8b4.memo.json", + "packet": "freshness-runner-deploy-trial-e77f8b4.packet.md", + "packet_hash": "sha256:2873f6deadd938ec07e1a4d5f314f8dbf456a00893d06cf89ce7eecb14bf9985", + "required_highlight": "no-schedule" + }, + { + "n": 4, + "memo_id": "freshness-schedule-enable-retire-sweep", + "workplan": "RMGR-WP-0020", + "task": "RMGR-WP-0020-T04", + "question": "Enable the repo-manager-bounded-freshness schedule and retire the paused state-hub-consistency-sweep definition?", + "memo": "freshness-schedule-enable-retire-sweep.memo.json", + "packet": "freshness-schedule-enable-retire-sweep.packet.md", + "packet_hash": "sha256:8389b3fbf7b4b5267b7ed9f8ad0381c88600181f112148736e9e81a4df579c5c", + "required_highlight": "after-clean-trials" + } + ] +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.memo.json b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.memo.json new file mode 100644 index 0000000..3417be5 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.memo.json @@ -0,0 +1,53 @@ +{ + "id": "owner-return-pickup-plan-b2c6c56", + "version": 1, + "question": "Approve the owner-return pickup plan, definition and repository grant, and one single-repository trial once its preconditions are evidenced?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Plan approval plus one gated trial; the definition stays disabled and wakeups never clear waits.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Pending authenticated reviewer", + "role": "reviewer", + "identifiers": [] + }, + "target": { + "id": "activity-core:source:b2c6c5613218dea9dbaef303aff22a8d1b07f074:owner-return-pickup", + "kind": "activity-plan", + "label": "Owner-return pickup", + "environment": "production", + "requires_new_bind": true + }, + "justification": null, + "terms": null + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "owner-return-pickup-plan-b2c6c56-packet", + "label": "Change, evidence, rollback and limits", + "hash": "sha256:1b5761484c3100627b4e3148c24d0d9e374d42b2aaa20a00fc54191ed801269e" + } + ], + "highlights": [ + { + "id": "preconditions-open", + "item_id": "owner-return-pickup-plan-b2c6c56-packet", + "locator": { + "kind": "work_record", + "workplan": "ACTIVITY-WP-0043", + "task": "ACTIVITY-WP-0043-T04" + }, + "note": "The runner wiring and scanned-commit handoff are not built yet; the trial may run only after preconditions 1 to 3 are evidenced.", + "required_ack": true, + "severity": "critical" + } + ], + "locale": "en", + "ui_release": "informed-decision@0.2.0", + "approval_id": null, + "approval_binding_digest": null, + "sealed": false +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.packet.md b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.packet.md new file mode 100644 index 0000000..4cc274b --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/owner-return-pickup-plan-b2c6c56.packet.md @@ -0,0 +1,37 @@ +# Approve the owner-return pickup plan (STATE-WP-0094-T03, ACTIVITY-WP-0043) + +Approve, at activity-core b2c6c5613218dea9dbaef303aff22a8d1b07f074, the +owner-return pickup activation plan (docs/owner-return-pickup-activation-plan.md), +its ActivityDefinition owner-return-pickup (stays enabled: false), harness +profile harness.agent-dev-local@1.0.0, and the repository grant v1 (workplans +path only, exactly one commit, no publish). Also approve one operator-triggered +trial for a single repository, run only after preconditions 1 to 3 are evidenced. + +What this does when used: when an agent replied to a task that waits on it, +the owner is woken once through an Activity Core ops run. The wakeup ID is a +sha256 of repo, task and message, and the database unique key stops duplicates. +A wakeup never clears a wait, a task status, a human gate or any other field. +Tasks that still need a human, unresolved or unknown decisions, residual work, +nonterminal or unknown predecessors and future wait windows are stopped. + +Preconditions not yet met: +1. C-25 pagination deployed (memo 1). +2. The caller passes the scanned commit SHA to the eligibility builder + (C-25 does not yet report it). +3. The caller runs inside the existing supported runner. That wiring is not + built; no new schedule may be introduced for it. + +Trial: set ACTIVITY_CORE_OWNER_RETURN_PICKUP_ENABLED=true on that one process, +run once for one repository, save planner input/output and adapter receipts, +re-run the same input and show every insert becomes duplicate. Evidence goes to +activity-core docs/evidence/ACTIVITY-WP-0043-*.md. + +Rollback: unset the flag (the adapter refuses before any write); close open rows +through the normal ops-run close path, never delete them. + +Evidence so far: 20 adapter tests, 23 eligibility-builder tests; full +activity-core suite 734 passed, 1 skipped. No dispatch has happened. + +Alternatives: approve plan and trial; approve the plan only, no trial; return +for changes; decline. This answer does not enable the definition, add a +schedule, or resolve hub decision 7b19de6c-72a1-409e-89a9-ec3ac09c03fd. diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.memo.json b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.memo.json new file mode 100644 index 0000000..245177d --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.memo.json @@ -0,0 +1,53 @@ +{ + "id": "state-hub-edge-receiving-rollout-c287ed8", + "version": 1, + "question": "Deploy State Hub c287ed8 (source-owned dependency-edge receiving, paginated C-25, additive migration) to railiance01?", + "requested_act": "approve", + "binding_level": "organizational", + "brief": "Production rollout of tested source; rollback is helm rollback to revision 72 without schema downgrade.", + "binding": { + "principal": { + "id": "pending-human-session", + "kind": "person", + "display_name": "Pending authenticated reviewer", + "role": "reviewer", + "identifiers": [] + }, + "target": { + "id": "state-hub:source:c287ed82594313394ca8e67ce40714c90e744af6", + "kind": "service-release", + "label": "State Hub main-c287ed8", + "environment": "production", + "requires_new_bind": true + }, + "justification": null, + "terms": null + }, + "step_kind": "approve", + "packet": [ + { + "item_id": "state-hub-edge-receiving-rollout-c287ed8-packet", + "label": "Change, evidence, rollback and limits", + "hash": "sha256:7fbc4b37d513e711cf1b62e393f2f060df378975efab4d11473fd8b1567cd0dd" + } + ], + "highlights": [ + { + "id": "deploy-only", + "item_id": "state-hub-edge-receiving-rollout-c287ed8-packet", + "locator": { + "kind": "work_record", + "workplan": "STATE-WP-0094", + "task": "STATE-WP-0094-T05" + }, + "note": "Approves this deployment and its post-deploy proof only; it does not mark T05 done, schedule freshness, or adopt existing C-20/API edges.", + "required_ack": true, + "severity": "critical" + } + ], + "locale": "en", + "ui_release": "informed-decision@0.2.0", + "approval_id": null, + "approval_binding_digest": null, + "sealed": false +} diff --git a/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.packet.md b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.packet.md new file mode 100644 index 0000000..64383bd --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/provisioning/state-hub-edge-receiving-rollout-c287ed8.packet.md @@ -0,0 +1,43 @@ +# Deploy State Hub dependency-edge receiving (STATE-WP-0094-T05) + +Deploy State Hub source c287ed82594313394ca8e67ce40714c90e744af6 (CI image +main-c287ed8, digest verified before use) to railiance01, replacing Helm +revision 72 (main-5dd3df9). + +What ships: +- Forge receiving derives depends_on edges from the immutable source commit and + reconciles only rows it owns (source_owner = forge:). Rows created by + the API, MCP or the C-20 fix are never changed or adopted. Missing, ambiguous + or self targets are listed as unresolved, never dropped. One transaction per + receive; a repeat receive of the same commit is a noop. +- The projection dry run previews edge create/remove/unresolved/external. +- C-25 owner-reply collection pages through all replies (200 per page, at most + 50 pages); GET /messages/ gains a stable offset. +- Additive migration b3c4d5e6f7a8: two nullable columns and one index on + workplan_dependencies. Upgrade, downgrade and re-upgrade verified on a scratch + PostgreSQL database; existing rows keep owner NULL. + +Evidence: full suite 1018 passed; 138 passed in the projection suites; the +consistency checker gives byte-identical findings before and after these commits +(27 C-03 failures are pre-existing). Ruff was not available; no lint claim. + +Procedure: state-hub docs/rollout-dependency-edge-receiving.md. Helm upgrade +with --reuse-values --set image.tag --atomic --timeout 3m; migration in the +pre-upgrade hook. Proof: a normal immutable receive of state-hub must create the +STATE-WP-0095-T04 edges and list ACTIVITY-WP-0026 as unresolved, then a repeat +receive must return noop. No task PATCH or direct consistency repair counts as proof. + +Rollback: helm rollback to revision 72. The schema is not downgraded: the +columns are additive and nullable, and dropping source_owner would orphan the +ownership marker. + +Known limits you accept with this answer: +- Edges created earlier by C-20 or the API are never adopted, so deleting their + line from a workplan file does not remove them. +- The dry-run preview does not model receiving's refusal when a commit has no + workplans/ directory. +- This schedules nothing. Freshness stays manual until memos 3 and 4. + +Alternatives: approve this rollout; return it for changes; decline it. +Approving this does not resolve hub decision 7b19de6c-72a1-409e-89a9-ec3ac09c03fd +and does not mark STATE-WP-0094-T05 done. diff --git a/docs/batches/2026-10-04-state-hub-wp0094/sitting.json b/docs/batches/2026-10-04-state-hub-wp0094/sitting.json new file mode 100644 index 0000000..3932f09 --- /dev/null +++ b/docs/batches/2026-10-04-state-hub-wp0094/sitting.json @@ -0,0 +1,21 @@ +{ + "kind": "informed-decision-sitting", + "id": "infd-sitting-2026-10-04-state-hub-wp0094", + "review_group": "net-kingdom-admins", + "principal": "uid=platform-root,ou=people,dc=netkingdom,dc=local", + "status": "prepared", + "hub_decision": "7b19de6c-72a1-409e-89a9-ec3ac09c03fd", + "resolves_hub_decision": "never", + "batches": [ + "infd-batch-2026-10-04-state-hub-wp0094" + ], + "memo_count": 4, + "memo_ids": [ + "state-hub-edge-receiving-rollout-c287ed8", + "owner-return-pickup-plan-b2c6c56", + "freshness-runner-deploy-trial-e77f8b4", + "freshness-schedule-enable-retire-sweep" + ], + "bind_path": "founder creates the approvals in an attended terminal, then exact-record admission, store load, and the founder's own answer per memo", + "note": "Prepared by an agent. Not posted, not admitted, not loaded. No answer exists." +}