[K7] Add CLI reference slice and restart/recovery proof #27

Merged
adrian.tkacz merged 2 commits from issue-10-cli-recovery into develop 2026-09-27 20:59:49 +00:00
Member

Selected Issue

Implements #10. Leave issue open until owner integration into develop; no automatic merge or deployment.

Change

Thin reference/export CLI over a shared bounded application step; owner-approved two-node Program, FixedAllocator, durable SQLite/artifacts, explicit accepted predecessor input, independent deterministic verification, exact-head Forgejo PR delivery, opt-in finite-budget Codex composition, restart recovery and installed-wheel proof.

Recovery Remediation

Owner findings O1/O2 are addressed in a895a33d47e37b661cf02a4c33a28798c77a124e and independently verified by the fresh whole-PR review:

  • O1: requests do not assert pre-dispatch resolution. Matching runtime identity is retained durably and reused only for its original operation/handle; Codex receipt-only restart without resolution evidence returns identity_unavailable and cannot accept. Legacy acceptance missing required identity cannot publish/export success.
  • O2: cancellation has durable intent/claim/unknown state before interrupt. An attempted interrupt is never blindly reissued after restart; observations distinguish terminal target evidence from cancellation delivery and engineering acceptance.

Regression tests cover native-shaped receipt/identity crash boundaries, original durable resolution recovery, absent identity, cancellation lost replies and pre/post-send interruptions across repeated restarts and expiry.

Validation At Current HEAD

  • make check: passed, 553 tests and all static/import/secret/diff gates.
  • make package-check: passed, wheel/sdist build and installed CLI run/replay/export.
  • make audit: passed, no known vulnerabilities.
  • Forgejo CI run 59 / id 2030: success at exact HEAD a895a33d47e37b661cf02a4c33a28798c77a124e.

Current Delivery Status

READY_FOR_OWNER_MERGE for a895a33d47e37b661cf02a4c33a28798c77a124e. Final ledger; delivery remediation budget used 1/10.

Fresh verified routed whole-PR review 648 returned substantive APPROVE, zero blocking findings, explicitly verifying O1/O2. Forgejo persisted COMMENT because the configured reviewer is the author and formal self-approval was rejected; no platform APPROVED state is claimed. Historical review 647 remains inapplicable to this HEAD. Readiness does not authorize automatic merge.

Boundaries

Default CLI execution is synthetic/offline, not a live Forgejo PR or model call. Independent verification is deterministic and outside worker authority, not model review. The reference has zero autonomous remediation budget and pauses failed verification. No live execution is claimed. Opt-in live use requires an owner-seeded disposable remote base, controller-owned bare object source, pinned finite-timeout Codex connection and scoped Forge adapter. Trusted-development mode is not hostile-worker isolation; local limits are not provider-side hard cost caps. No K8/Scarcity Router product integration is included.

Owner merge authority remains separate; issue open, PR unmerged. Branch-protection rules are inaccessible to this account and are not inferred or bypassed.

## Selected Issue Implements #10. Leave issue open until owner integration into `develop`; no automatic merge or deployment. ## Change Thin reference/export CLI over a shared bounded application step; owner-approved two-node Program, FixedAllocator, durable SQLite/artifacts, explicit accepted predecessor input, independent deterministic verification, exact-head Forgejo PR delivery, opt-in finite-budget Codex composition, restart recovery and installed-wheel proof. ## Recovery Remediation Owner findings O1/O2 are addressed in `a895a33d47e37b661cf02a4c33a28798c77a124e` and independently verified by the fresh whole-PR review: - O1: requests do not assert pre-dispatch resolution. Matching runtime identity is retained durably and reused only for its original operation/handle; Codex receipt-only restart without resolution evidence returns `identity_unavailable` and cannot accept. Legacy acceptance missing required identity cannot publish/export success. - O2: cancellation has durable intent/claim/unknown state before interrupt. An attempted interrupt is never blindly reissued after restart; observations distinguish terminal target evidence from cancellation delivery and engineering acceptance. Regression tests cover native-shaped receipt/identity crash boundaries, original durable resolution recovery, absent identity, cancellation lost replies and pre/post-send interruptions across repeated restarts and expiry. ## Validation At Current HEAD - `make check`: passed, 553 tests and all static/import/secret/diff gates. - `make package-check`: passed, wheel/sdist build and installed CLI run/replay/export. - `make audit`: passed, no known vulnerabilities. - Forgejo CI [run 59 / id 2030](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/59): success at exact HEAD `a895a33d47e37b661cf02a4c33a28798c77a124e`. ## Current Delivery Status **READY_FOR_OWNER_MERGE** for `a895a33d47e37b661cf02a4c33a28798c77a124e`. [Final ledger](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/27#issuecomment-12394); delivery remediation budget used **1/10**. Fresh verified routed whole-PR [review 648](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/27#issuecomment-12389) returned substantive **APPROVE**, zero blocking findings, explicitly verifying O1/O2. Forgejo persisted COMMENT because the configured reviewer is the author and formal self-approval was rejected; no platform APPROVED state is claimed. Historical review 647 remains inapplicable to this HEAD. Readiness does not authorize automatic merge. ## Boundaries Default CLI execution is synthetic/offline, not a live Forgejo PR or model call. Independent verification is deterministic and outside worker authority, not model review. The reference has zero autonomous remediation budget and pauses failed verification. No live execution is claimed. Opt-in live use requires an owner-seeded disposable remote base, controller-owned bare object source, pinned finite-timeout Codex connection and scoped Forge adapter. Trusted-development mode is not hostile-worker isolation; local limits are not provider-side hard cost caps. No K8/Scarcity Router product integration is included. Owner merge authority remains separate; issue open, PR unmerged. Branch-protection rules are inaccessible to this account and are not inferred or bypassed.
feat: add bounded CLI reference and recovery proof
All checks were successful
ci / check (pull_request) Successful in 35s
c5448d9c3f
Author
Member

Delivery Ledger: Initial Entry

  • Selected issue: #10; PR: #27; branch: issue-10-cli-recovery -> develop.
  • Frozen HEAD: c5448d9c3f798f100dca8b05abec09fdf8d848ab.
  • Frozen base: 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f.
  • max_remediation_cycles = 10; remediation_used = 0; valid completed full reviews = 0.
  • Validation: make check passed (538 tests and all static/import/secret/diff gates); make package-check passed including installed CLI replay/export; make audit passed (no known vulnerabilities).
  • Review classification: architecture/security critical due to durable acceptance, restart/reconciliation, effect safety, live authority boundaries and persistent budgets. Required repository_review tightening: L4; reasoning/coding/tool_use minima 5/5/5; tool use and reasoning mode required. Author capability floor unknown; no capability inferred from model identity.
  • Independent routing/dispatch/review: pending. No approval claimed. All subsequent review and remediation entries remain in this PR.
  • Branch-protection inspection was denied to the configured MCP account; no inaccessible protection rule is assumed. Canonical CI check remains required. No merge or issue closure authorized here.
## Delivery Ledger: Initial Entry - Selected issue: #10; PR: #27; branch: `issue-10-cli-recovery` -> `develop`. - Frozen HEAD: `c5448d9c3f798f100dca8b05abec09fdf8d848ab`. - Frozen base: `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`. - `max_remediation_cycles = 10`; `remediation_used = 0`; valid completed full reviews = 0. - Validation: `make check` passed (538 tests and all static/import/secret/diff gates); `make package-check` passed including installed CLI replay/export; `make audit` passed (no known vulnerabilities). - Review classification: architecture/security critical due to durable acceptance, restart/reconciliation, effect safety, live authority boundaries and persistent budgets. Required `repository_review` tightening: L4; reasoning/coding/tool_use minima 5/5/5; tool use and reasoning mode required. Author capability floor unknown; no capability inferred from model identity. - Independent routing/dispatch/review: pending. No approval claimed. All subsequent review and remediation entries remain in this PR. - Branch-protection inspection was denied to the configured MCP account; no inaccessible protection rule is assumed. Canonical CI `check` remains required. No merge or issue closure authorized here.
Author
Member

Delivery Ledger: Review 1 Dispatch

Frozen HEAD c5448d9c3f798f100dca8b05abec09fdf8d848ab, base 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f; unchanged since initial ledger. No prior completed review or remediation.

  • Profile: repository_review; monotone floor task_level=L4, capability_minima={reasoning:5,coding:5,tool_use:5}, hard_constraints={requires_tool_use:true,requires_reasoning_mode:true}.
  • Router selected: zai/glm-5.3/max; dispatched: zai-coding-plan/glm-5.3/max using the documented provider-ID adapter; no fallback.
  • Router catalog version 4; profile policy version 8; resource policy version 1; degraded=false.
  • Agent Manager request am-1790532801112-z89o6r; reviewer session ses_f1bedad32ffe7GN4GjOyQix1xU.
  • State: REQUESTED and DISPATCH_VERIFIED. Independent resolution returned GLM-5.3 (zai-coding-plan) · max, matching the Router-eligible identity and current Agent Manager catalog.
  • Full review completion/verdict: pending. remediation_used=0/10.

Invalid diagnostic only: the first router call used unsupported shorthand (minima and top-level hard constraints) and returned invalid_request. The published machine-interface/TaskRequirement contract was inspected, then one corrected call with capability_minima and nested hard_constraints produced the sole valid selection for this boundary. This consumed no valid review or remediation cycle.

## Delivery Ledger: Review 1 Dispatch Frozen HEAD `c5448d9c3f798f100dca8b05abec09fdf8d848ab`, base `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`; unchanged since initial ledger. No prior completed review or remediation. - Profile: `repository_review`; monotone floor `task_level=L4`, `capability_minima={reasoning:5,coding:5,tool_use:5}`, `hard_constraints={requires_tool_use:true,requires_reasoning_mode:true}`. - Router selected: `zai/glm-5.3/max`; dispatched: `zai-coding-plan/glm-5.3/max` using the documented provider-ID adapter; no fallback. - Router catalog version 4; profile policy version 8; resource policy version 1; `degraded=false`. - Agent Manager request `am-1790532801112-z89o6r`; reviewer session `ses_f1bedad32ffe7GN4GjOyQix1xU`. - State: `REQUESTED` and `DISPATCH_VERIFIED`. Independent resolution returned `GLM-5.3 (zai-coding-plan) · max`, matching the Router-eligible identity and current Agent Manager catalog. - Full review completion/verdict: pending. `remediation_used=0/10`. Invalid diagnostic only: the first router call used unsupported shorthand (`minima` and top-level hard constraints) and returned `invalid_request`. The published machine-interface/TaskRequirement contract was inspected, then one corrected call with `capability_minima` and nested `hard_constraints` produced the sole valid selection for this boundary. This consumed no valid review or remediation cycle.
Author
Member

Exact-HEAD CI Evidence

Forgejo workflow run 2028 / displayed run 58 completed success for full HEAD c5448d9c3f798f100dca8b05abec09fdf8d848ab, pull_request event, 2026-09-27 18:10:36–18:11:11 UTC. This repository's ci workflow contains the single check job running make check, make package-check, and make audit. Exact SHA and success confirmed by workflow-run metadata. The newer jobs endpoint returned 404; no job-log detail is claimed.

Independent review remains pending. Working tree clean; budget unchanged at 0/10.

### Exact-HEAD CI Evidence Forgejo workflow run `2028` / displayed run [58](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/58) completed `success` for full HEAD `c5448d9c3f798f100dca8b05abec09fdf8d848ab`, pull_request event, 2026-09-27 18:10:36–18:11:11 UTC. This repository's `ci` workflow contains the single `check` job running `make check`, `make package-check`, and `make audit`. Exact SHA and success confirmed by workflow-run metadata. The newer jobs endpoint returned 404; no job-log detail is claimed. Independent review remains pending. Working tree clean; budget unchanged at `0/10`.
kilo left a comment

PR Review: [K7] Add CLI reference slice and restart/recovery proof (#27)

Repository: Creatidy/creatidy-kernel
Branch: issue-10-cli-recovery -> develop
Frozen head: c5448d9c3f798f100dca8b05abec09fdf8d848ab (frozen base 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f)
Linked issue: #10 ([K7] CLI reference slice and restart/recovery proof)

Identity limitation (recorded): the configured Forgejo MCP account is kilo, the PR author. A formal APPROVED review was attempted first and was rejected by Forgejo with approve your own pull is not allowed. This stored COMMENT therefore preserves the substantive independent-review verdict below; it is not a formal Forgejo approval.

Summary

Adds a thin creatidy-kernel reference/export CLI over a new shared application step (ports/application.py::advance_work_unit), a deterministic durable runtime and offline forge fixture with restart/recovery faults (adapters/reference.py, reference_forge.py), an opt-in finite-budget live composition (reference_live.py), a SQLiteProgramStore.operations() listing with the OperationRecord contract moved to ports/program_store.py (ApplicationStore), console-script packaging, and installed-wheel CLI proof in tools/check_package.py. 15 files changed; the offline suite and all gates stay live-service free.

Intent / Acceptance Evidence

Issue criterion Independent evidence at frozen head
Offline two-node flow through allocation, runtime, verification, acceptance tests/test_reference.py::test_two_nodes_reconstruct_and_export (2 accepted, attempts == 1); my local run of the 4 new suites: 29/29 passed; CI run #2028 success on the frozen head
First accepted output is explicit second input; duplicates/stale/uncertain do not advance or duplicate DurableReferenceRuntime.start enforces artifact:sha256 predecessor binding; restart-boundary tests assert single attempt; stale-receipt and forge duplicate/stale tests; store claim refuses uncertain retry
Restart at commit/send/receipt and lost context; no auto merge/deploy test_restart_boundaries, test_lost_context_does_not_advance_or_retry, CLI fault/resume tests; export pins automatic_merge/automatic_deploy false; CLI fails closed on unknown commands (test_cli.py)
Forgejo PR + attempts/identities/resources/verification/remediation/interruptions/unknowns export deliver_reference_pr exact-head AGit with durable synthetic transport; reference_export verified by manual CLI run (completed, 2 accepted, PR forgejo:synthetic/reference#1, stable across rerun/export, resources value: null honestly reported)
Shared application layer; offline suite needs no live services advance_work_unit is the single step used by both offline and live compositions; ports/application.py imports only core + ports; grep confirms no ports/adapters imports in core; all new tests ran offline locally
Honest trust/isolation TrustMode.TRUSTED_DEVELOPMENT, export isolation: "none; deterministic synthetic worker" / "not attested", no credential loading anywhere in the diff, README limitations section

Architecture / Information Flow

Dependency direction is preserved: adapters -> ports -> core throughout; core has zero ports/adapters imports. Moving OperationRecord from adapters/sqlite_store.py to ports/program_store.py and adding the ApplicationStore protocol is the correct shape for a ports-level application step. Authority stays with code: advance_work_unit routes every transition through durable admit/admit_with_intent commands, and verify_candidate/admit_accepted (core) re-validate attempt status, policy pinning, and worker-cannot-satisfy before SatisfyWorkUnit. Uncertain effects stay unknown: claim blocks retry without an absent/idempotent proof, and the lost-PR-reply path keeps status unknown with no replacement PR (verified in test_lost_pr_reply_never_repeats_creation). The live composition is a library function requiring caller-supplied pinned/scoped adapters, outside the CLI default, matching the issue's opt-in constraint.

Blocking Issues

None (B0). No correctness, authority, boundary, or validation defect found at the frozen head.

Non-blocking Suggestions

  • S1 SQLiteProgramStore.operations() selects all operation ids then re-reads each via self.operation() (N+1). Bounded for the reference app; filter by prefix in SQL and/or fetch in one statement if this becomes a shared path.
  • S2 CLI-level fault tests exercise runtime boundaries only; pr-commit/pr-send/pr-receipt are covered at the delivery layer (tests/test_reference_forge.py) but not end-to-end through main().
  • S3 run_live_reference reports intermediate conditions (e.g. a lease-held waiting) as budget_exhausted in the returned condition; durable per-operation status remains inspectable via export, but the collapsed condition is coarser than the store state.

Questions for the Author

None blocking. For the record: recovery of a pr-send interruption intentionally remains permanently unknown without a retained reference (no topic-based rediscovery); confirm that is the intended steady-state semantics and not a future reconciliation hook.

Security / Privacy Notes

reference_git runs a resolved Git executable with controller-built argument lists, no shell, GIT_CONFIG_NOSYSTEM/devnull global config, fixed identity/dates, and a 10s timeout — hardened for a trusted-development reference. prepare_reference_directory refuses to commandeer an existing checkout or symlinked repository. The live collector rejects symlinked/oversized (> 4096 byte) result.txt. No secrets, tokens, or credential loaders appear in the diff; live authorization is an explicit caller-supplied authorize predicate plus deadline. object_source must be a controller-owned bare repository outside the worker workspace, and the runner never initializes or updates the remote base.

Test / Documentation Gaps

Minor: pr-* interruption markers are returned in the receipt but not recorded as durable interruption:* operations, so they do not appear in a later export (runtime and live-budget interruptions do). The dedicated attempt identity artifact is only finalized on fresh dispatch, so a send-fault-recovered attempt exports identity: null (identity remains available in observation artifacts). README additions were verified against a manual CLI run and match observed behavior; docs/architecture/successor.md already defines K7 and needed no change.

Follow-Up Candidates

None meet the durable/distinct/actionable bar; S1-S3 are ordinary engineering notes for the author or a future slice.

Overall Recommendation

APPROVE for frozen head c5448d9c3f798f100dca8b05abec09fdf8d848ab — blocking findings: none. This is the independent reviewer's substantive verdict; due to the shared-author identity limitation recorded above, the persisted Forgejo state is COMMENT, not a formal APPROVED review, and no formal approval is claimed.

## PR Review: [K7] Add CLI reference slice and restart/recovery proof (#27) **Repository:** Creatidy/creatidy-kernel **Branch:** `issue-10-cli-recovery` -> `develop` **Frozen head:** `c5448d9c3f798f100dca8b05abec09fdf8d848ab` (frozen base `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`) **Linked issue:** #10 ([K7] CLI reference slice and restart/recovery proof) **Identity limitation (recorded):** the configured Forgejo MCP account is `kilo`, the PR author. A formal `APPROVED` review was attempted first and was rejected by Forgejo with `approve your own pull is not allowed`. This stored `COMMENT` therefore preserves the substantive independent-review verdict below; it is **not** a formal Forgejo approval. ### Summary Adds a thin `creatidy-kernel reference`/`export` CLI over a new shared application step (`ports/application.py::advance_work_unit`), a deterministic durable runtime and offline forge fixture with restart/recovery faults (`adapters/reference.py`, `reference_forge.py`), an opt-in finite-budget live composition (`reference_live.py`), a `SQLiteProgramStore.operations()` listing with the `OperationRecord` contract moved to `ports/program_store.py` (`ApplicationStore`), console-script packaging, and installed-wheel CLI proof in `tools/check_package.py`. 15 files changed; the offline suite and all gates stay live-service free. ### Intent / Acceptance Evidence | Issue criterion | Independent evidence at frozen head | | --- | --- | | Offline two-node flow through allocation, runtime, verification, acceptance | `tests/test_reference.py::test_two_nodes_reconstruct_and_export` (2 accepted, `attempts == 1`); my local run of the 4 new suites: 29/29 passed; CI run #2028 `success` on the frozen head | | First accepted output is explicit second input; duplicates/stale/uncertain do not advance or duplicate | `DurableReferenceRuntime.start` enforces `artifact:sha256` predecessor binding; restart-boundary tests assert single attempt; stale-receipt and forge duplicate/stale tests; store `claim` refuses uncertain retry | | Restart at commit/send/receipt and lost context; no auto merge/deploy | `test_restart_boundaries`, `test_lost_context_does_not_advance_or_retry`, CLI fault/resume tests; export pins `automatic_merge`/`automatic_deploy` false; CLI fails closed on unknown commands (`test_cli.py`) | | Forgejo PR + attempts/identities/resources/verification/remediation/interruptions/unknowns export | `deliver_reference_pr` exact-head AGit with durable synthetic transport; `reference_export` verified by manual CLI run (completed, 2 accepted, PR `forgejo:synthetic/reference#1`, stable across rerun/export, resources `value: null` honestly reported) | | Shared application layer; offline suite needs no live services | `advance_work_unit` is the single step used by both offline and live compositions; `ports/application.py` imports only `core` + `ports`; grep confirms no `ports`/`adapters` imports in `core`; all new tests ran offline locally | | Honest trust/isolation | `TrustMode.TRUSTED_DEVELOPMENT`, export `isolation: "none; deterministic synthetic worker"` / `"not attested"`, no credential loading anywhere in the diff, README limitations section | ### Architecture / Information Flow Dependency direction is preserved: `adapters -> ports -> core` throughout; `core` has zero `ports`/`adapters` imports. Moving `OperationRecord` from `adapters/sqlite_store.py` to `ports/program_store.py` and adding the `ApplicationStore` protocol is the correct shape for a ports-level application step. Authority stays with code: `advance_work_unit` routes every transition through durable `admit`/`admit_with_intent` commands, and `verify_candidate`/`admit_accepted` (core) re-validate attempt status, policy pinning, and worker-cannot-satisfy before `SatisfyWorkUnit`. Uncertain effects stay unknown: `claim` blocks retry without an `absent`/`idempotent` proof, and the lost-PR-reply path keeps status `unknown` with no replacement PR (verified in `test_lost_pr_reply_never_repeats_creation`). The live composition is a library function requiring caller-supplied pinned/scoped adapters, outside the CLI default, matching the issue's opt-in constraint. ### Blocking Issues None (B0). No correctness, authority, boundary, or validation defect found at the frozen head. ### Non-blocking Suggestions - **S1** `SQLiteProgramStore.operations()` selects all operation ids then re-reads each via `self.operation()` (N+1). Bounded for the reference app; filter by prefix in SQL and/or fetch in one statement if this becomes a shared path. - **S2** CLI-level fault tests exercise runtime boundaries only; `pr-commit`/`pr-send`/`pr-receipt` are covered at the delivery layer (`tests/test_reference_forge.py`) but not end-to-end through `main()`. - **S3** `run_live_reference` reports intermediate conditions (e.g. a lease-held `waiting`) as `budget_exhausted` in the returned condition; durable per-operation status remains inspectable via export, but the collapsed condition is coarser than the store state. ### Questions for the Author None blocking. For the record: recovery of a `pr-send` interruption intentionally remains permanently `unknown` without a retained reference (no topic-based rediscovery); confirm that is the intended steady-state semantics and not a future reconciliation hook. ### Security / Privacy Notes `reference_git` runs a resolved Git executable with controller-built argument lists, no shell, `GIT_CONFIG_NOSYSTEM`/devnull global config, fixed identity/dates, and a 10s timeout — hardened for a trusted-development reference. `prepare_reference_directory` refuses to commandeer an existing checkout or symlinked repository. The live collector rejects symlinked/oversized (`> 4096` byte) `result.txt`. No secrets, tokens, or credential loaders appear in the diff; live authorization is an explicit caller-supplied `authorize` predicate plus deadline. `object_source` must be a controller-owned bare repository outside the worker workspace, and the runner never initializes or updates the remote base. ### Test / Documentation Gaps Minor: `pr-*` interruption markers are returned in the receipt but not recorded as durable `interruption:*` operations, so they do not appear in a later `export` (runtime and `live-budget` interruptions do). The dedicated attempt `identity` artifact is only finalized on fresh dispatch, so a `send`-fault-recovered attempt exports `identity: null` (identity remains available in observation artifacts). README additions were verified against a manual CLI run and match observed behavior; `docs/architecture/successor.md` already defines K7 and needed no change. ### Follow-Up Candidates None meet the durable/distinct/actionable bar; S1-S3 are ordinary engineering notes for the author or a future slice. ### Overall Recommendation **APPROVE** for frozen head `c5448d9c3f798f100dca8b05abec09fdf8d848ab` — blocking findings: none. This is the independent reviewer's substantive verdict; due to the shared-author identity limitation recorded above, the persisted Forgejo state is `COMMENT`, not a formal `APPROVED` review, and no formal approval is claimed.
Author
Member

Delivery Ledger: Completed Review Cycle 1

  • Issue #10; PR #27; branch issue-10-cli-recovery -> develop.
  • Exact reviewed/approved HEAD: c5448d9c3f798f100dca8b05abec09fdf8d848ab; frozen/current base: 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f. Re-fetched PR metadata confirms unchanged subjects; working tree clean.
  • Profile: repository_review; monotone floor L4, reasoning/coding/tool_use 5/5/5, requires_tool_use=true, requires_reasoning_mode=true. Author capability floor unknown, not inferred.
  • router_selected=zai/glm-5.3/max; dispatched=zai-coding-plan/glm-5.3/max; documented provider adapter, no harness fallback.
  • Router catalog_version=4; profile_policy_version=8; resource_policy_version=1; degraded=false.
  • Reviewer session ses_f1bedad32ffe7GN4GjOyQix1xU; request am-1790532801112-z89o6r; dispatch_verification=DISPATCH_VERIFIED from Agent Manager's explicit GLM-5.3 (zai-coding-plan) · max resolution.
  • Reviewer completed the fresh full-PR review. Independent review: 647, bound to the exact HEAD, stale=false.
  • substantive_verdict=APPROVE from ### Overall Recommendation; forgejo_review_state=COMMENT; platform_approval_recorded=false.
  • platform_identity_limitation: PR author and configured MCP identity independently confirmed as kilo (id 8). Reviewer supplied the actual failed APPROVED call result: MCP error -32603: create pull review err: approve your own pull is not allowed. The subsequent COMMENT preserves the substantive approval; no formal platform approval is claimed.
  • Blocking finding count: 0; blocker IDs: none (B0).
  • Non-blocking S1-S3 and minor export/test observations remain recorded in the review; no changes were required for approval. The reviewer question is confirmed: a lost AGit creation reply with no retained reference intentionally remains unknown, with no topic-search absence inference or duplicate push.
  • Remediation status: none; resulting HEAD unchanged; remediation_used=0/10; valid completed full reviews=1. No budget reset or code changes after review.

Final Evidence And Terminal Condition

  • make check: passed, 538 tests and repository-owned static/import/secret/diff gates.
  • make package-check: passed, wheel/sdist rebuild and installed CLI run/replay/export.
  • make audit: passed, no known vulnerabilities.
  • Required Forgejo CI: run 58 / id 2028, success, exact full HEAD confirmed. The sole check job invokes all three repository gates.
  • Issue acceptance evidence verified by implementation tests, installed-package proof and independent whole-PR review. Live execution remains explicitly opt-in and supplementary; no actual paid-provider/live-forge run claimed. Trusted-development and zero reference-remediation-budget limitations are documented.
  • Branch-protection inspection remains inaccessible to this MCP account; no unseen formal-approval rule is inferred or bypassed. Owner merge authority is separate.

READY_FOR_OWNER_MERGE for c5448d9c3f798f100dca8b05abec09fdf8d848ab. Leave issue #10 open and PR #27 unmerged; main untouched.

## Delivery Ledger: Completed Review Cycle 1 - Issue #10; PR #27; branch `issue-10-cli-recovery` -> `develop`. - Exact reviewed/approved HEAD: `c5448d9c3f798f100dca8b05abec09fdf8d848ab`; frozen/current base: `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`. Re-fetched PR metadata confirms unchanged subjects; working tree clean. - Profile: `repository_review`; monotone floor L4, reasoning/coding/tool_use 5/5/5, requires_tool_use=true, requires_reasoning_mode=true. Author capability floor unknown, not inferred. - `router_selected=zai/glm-5.3/max`; `dispatched=zai-coding-plan/glm-5.3/max`; documented provider adapter, no harness fallback. - Router catalog_version=4; profile_policy_version=8; resource_policy_version=1; degraded=false. - Reviewer session `ses_f1bedad32ffe7GN4GjOyQix1xU`; request `am-1790532801112-z89o6r`; `dispatch_verification=DISPATCH_VERIFIED` from Agent Manager's explicit `GLM-5.3 (zai-coding-plan) · max` resolution. - Reviewer completed the fresh full-PR review. Independent review: [647](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/27#issuecomment-12355), bound to the exact HEAD, stale=false. - `substantive_verdict=APPROVE` from `### Overall Recommendation`; `forgejo_review_state=COMMENT`; `platform_approval_recorded=false`. - `platform_identity_limitation`: PR author and configured MCP identity independently confirmed as `kilo` (id 8). Reviewer supplied the actual failed APPROVED call result: `MCP error -32603: create pull review err: approve your own pull is not allowed`. The subsequent COMMENT preserves the substantive approval; no formal platform approval is claimed. - Blocking finding count: 0; blocker IDs: none (B0). - Non-blocking S1-S3 and minor export/test observations remain recorded in the review; no changes were required for approval. The reviewer question is confirmed: a lost AGit creation reply with no retained reference intentionally remains unknown, with no topic-search absence inference or duplicate push. - Remediation status: `none`; resulting HEAD unchanged; `remediation_used=0/10`; valid completed full reviews=1. No budget reset or code changes after review. ## Final Evidence And Terminal Condition - `make check`: passed, 538 tests and repository-owned static/import/secret/diff gates. - `make package-check`: passed, wheel/sdist rebuild and installed CLI run/replay/export. - `make audit`: passed, no known vulnerabilities. - Required Forgejo CI: [run 58 / id 2028](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/58), `success`, exact full HEAD confirmed. The sole `check` job invokes all three repository gates. - Issue acceptance evidence verified by implementation tests, installed-package proof and independent whole-PR review. Live execution remains explicitly opt-in and supplementary; no actual paid-provider/live-forge run claimed. Trusted-development and zero reference-remediation-budget limitations are documented. - Branch-protection inspection remains inaccessible to this MCP account; no unseen formal-approval rule is inferred or bypassed. Owner merge authority is separate. **READY_FOR_OWNER_MERGE** for `c5448d9c3f798f100dca8b05abec09fdf8d848ab`. Leave issue #10 open and PR #27 unmerged; `main` untouched.
Author
Member

Delivery Ledger: Owner Review Reopens Remediation

Owner-side independent review of exact HEAD c5448d9c3f798f100dca8b05abec09fdf8d848ab identified two blocking K7 recovery defects on 2026-09-27. The prior READY_FOR_OWNER_MERGE determination is superseded; do not merge.

  • O1: identity evidence is lost at the receipt crash boundary; restored Codex resolved identity can remain unknown while acceptance advances, and pre-dispatch requests incorrectly claim resolved identity.
  • O2: budget-exhausted restarts blindly reissue cancellation for an unsettled accepted handle.

Both are valid in-scope recovery findings. Remediation is pending on this same branch and PR, followed by make check, make package-check, make audit and a freshly routed full independent review of the new exact HEAD. Historical review 647 and its prior ledger remain unchanged. Current budget 0/10; this combined owner-requested remediation will consume one cycle when code changes are committed/pushed. No K8/Scarcity Router product work, merge, or issue closure is included.

## Delivery Ledger: Owner Review Reopens Remediation Owner-side independent review of exact HEAD `c5448d9c3f798f100dca8b05abec09fdf8d848ab` identified two blocking K7 recovery defects on 2026-09-27. The prior READY_FOR_OWNER_MERGE determination is superseded; do not merge. - O1: identity evidence is lost at the receipt crash boundary; restored Codex resolved identity can remain unknown while acceptance advances, and pre-dispatch requests incorrectly claim resolved identity. - O2: budget-exhausted restarts blindly reissue cancellation for an unsettled accepted handle. Both are valid in-scope recovery findings. Remediation is pending on this same branch and PR, followed by `make check`, `make package-check`, `make audit` and a freshly routed full independent review of the new exact HEAD. Historical review 647 and its prior ledger remain unchanged. Current budget `0/10`; this combined owner-requested remediation will consume one cycle when code changes are committed/pushed. No K8/Scarcity Router product work, merge, or issue closure is included.
fix: preserve identity and cancellation across restart
All checks were successful
ci / check (pull_request) Successful in 38s
a895a33d47
Author
Member

Delivery Ledger: Remediation 1 Pushed

Owner review blockers O1/O2 from remediation entry were fixed together on the same branch/PR.

  • Prior HEAD: c5448d9c3f798f100dca8b05abec09fdf8d848ab.
  • Resulting HEAD: a895a33d47e37b661cf02a4c33a28798c77a124e (fix: preserve identity and cancellation across restart).
  • O1: pre-dispatch/restoration requests no longer assert resolved identity. Matching runtime evidence is persisted regardless of fresh dispatch; recovery may reuse original immutable resolution evidence, but a receipt-only Codex restore with no such evidence returns identity_unavailable before candidate acceptance. Legacy accepted records missing identity cannot export success or create a PR. Tests cover the real receipt/identity gap with native-shaped Codex responses, persisted-resolution recovery, offline reconstruction and legacy refusal.
  • O2: cancellation has its own immutable intent/claim/unknown delivery state, committed before interrupt. Once attempted it is never blindly resent. Restarts observe the exact target, and only terminal evidence records target settlement; cancellation delivery remains distinct/unknown. Export includes cancellation records and target_terminal. Tests cover normal/lost replies and interruption before/after send across repeated/expired restarts, with at most one cancel call.
  • Focused regression suite: 96 passed.
  • make check: passed, 553 tests, all formatting/lint/type/import/secret/diff checks passed.
  • make package-check: passed, built wheel/sdist and installed CLI run/replay/export.
  • make audit: passed, no known vulnerabilities.
  • remediation_status=done; remediation_used=1/10. One combined owner-requested change, no budget reset. Historical completed full reviews=1; old review 647 is not approval for this new HEAD.

Fresh exact-HEAD whole-PR independent review and CI verification are pending. PR remains unmerged, issue #10 open. No K8/product routing work added.

## Delivery Ledger: Remediation 1 Pushed Owner review blockers O1/O2 from [remediation entry](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/27#issuecomment-12382) were fixed together on the same branch/PR. - Prior HEAD: `c5448d9c3f798f100dca8b05abec09fdf8d848ab`. - Resulting HEAD: `a895a33d47e37b661cf02a4c33a28798c77a124e` (`fix: preserve identity and cancellation across restart`). - O1: pre-dispatch/restoration requests no longer assert resolved identity. Matching runtime evidence is persisted regardless of fresh dispatch; recovery may reuse original immutable resolution evidence, but a receipt-only Codex restore with no such evidence returns `identity_unavailable` before candidate acceptance. Legacy accepted records missing identity cannot export success or create a PR. Tests cover the real receipt/identity gap with native-shaped Codex responses, persisted-resolution recovery, offline reconstruction and legacy refusal. - O2: cancellation has its own immutable intent/claim/unknown delivery state, committed before interrupt. Once attempted it is never blindly resent. Restarts observe the exact target, and only terminal evidence records target settlement; cancellation delivery remains distinct/unknown. Export includes cancellation records and `target_terminal`. Tests cover normal/lost replies and interruption before/after send across repeated/expired restarts, with at most one cancel call. - Focused regression suite: 96 passed. - `make check`: passed, 553 tests, all formatting/lint/type/import/secret/diff checks passed. - `make package-check`: passed, built wheel/sdist and installed CLI run/replay/export. - `make audit`: passed, no known vulnerabilities. - `remediation_status=done`; **`remediation_used=1/10`**. One combined owner-requested change, no budget reset. Historical completed full reviews=1; old review 647 is not approval for this new HEAD. Fresh exact-HEAD whole-PR independent review and CI verification are pending. PR remains unmerged, issue #10 open. No K8/product routing work added.
Author
Member

Delivery Ledger: Review 2 Dispatch

Re-fetched PR metadata confirms frozen HEAD a895a33d47e37b661cf02a4c33a28798c77a124e, base 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f, same branch and PR. Ledger reconciles prior review 647 at old HEAD and combined owner-directed remediation 1; budget remains 1/10.

  • Fresh whole-PR review, not a delta-only check. Architecture/security and remediation floor: repository_review, L4, reasoning/coding/tool_use minima 5/5/5, tool use and reasoning mode required. Known author floor unavailable, not guessed.
  • One valid new Router selection: router_selected=zai/glm-5.3/max; dispatched=zai-coding-plan/glm-5.3/max; documented provider adapter; no fallback.
  • Catalog version 4; profile policy version 8; resource policy version 1; degraded=false.
  • Agent Manager request am-1790537324387-9lsf06; fresh reviewer session ses_f1ba8a83cffei1tk4WFohByTqY.
  • REQUESTED, then DISPATCH_VERIFIED: explicit resolution GLM-5.3 (zai-coding-plan) · max matches the selected eligible identity and current harness catalog.
  • Review completion/substantive verdict pending. Previous approval is historical only; no readiness claimed yet.

Local gates on the frozen new HEAD: make check passed (553 tests), make package-check passed, make audit passed. Required CI verification pending.

## Delivery Ledger: Review 2 Dispatch Re-fetched PR metadata confirms frozen HEAD `a895a33d47e37b661cf02a4c33a28798c77a124e`, base `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`, same branch and PR. Ledger reconciles prior review 647 at old HEAD and combined owner-directed remediation 1; **budget remains 1/10**. - Fresh whole-PR review, not a delta-only check. Architecture/security and remediation floor: `repository_review`, L4, reasoning/coding/tool_use minima 5/5/5, tool use and reasoning mode required. Known author floor unavailable, not guessed. - One valid new Router selection: `router_selected=zai/glm-5.3/max`; `dispatched=zai-coding-plan/glm-5.3/max`; documented provider adapter; no fallback. - Catalog version 4; profile policy version 8; resource policy version 1; degraded=false. - Agent Manager request `am-1790537324387-9lsf06`; fresh reviewer session `ses_f1ba8a83cffei1tk4WFohByTqY`. - `REQUESTED`, then `DISPATCH_VERIFIED`: explicit resolution `GLM-5.3 (zai-coding-plan) · max` matches the selected eligible identity and current harness catalog. - Review completion/substantive verdict pending. Previous approval is historical only; no readiness claimed yet. Local gates on the frozen new HEAD: `make check` passed (553 tests), `make package-check` passed, `make audit` passed. Required CI verification pending.
kilo left a comment

PR Review: [K7] Add CLI reference slice and restart/recovery proof (#27)

Repository: Creatidy/creatidy-kernel
Branch: issue-10-cli-recovery -> develop
Frozen head: a895a33d47e37b661cf02a4c33a28798c77a124e (frozen base 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f)
Linked issue: #10 ([K7] CLI reference slice and restart/recovery proof)

Identity limitation (recorded): the configured Forgejo MCP account is kilo (id 8), the PR author. A formal APPROVED review was submitted first and rejected by Forgejo with MCP error -32603: create pull review err: approve your own pull is not allowed. This stored COMMENT therefore preserves the substantive independent-review verdict below; it is not a formal Forgejo approval.

Summary

Whole-PR independent review of the remediated HEAD (owner blockers O1/O2 fixed in fix: preserve identity and cancellation across restart, delta +330/-16 over 8 files). The PR adds a thin creatidy-kernel reference/export CLI over the shared application step (ports/application.py::advance_work_unit), a durable deterministic offline runtime and forge fixture, an opt-in finite-budget live composition, OperationRecord/ApplicationStore at the ports level, and installed-wheel CLI proof.

Intent / Acceptance Evidence

Issue criterion Independent evidence at frozen head
Offline two-node flow Program -> READY -> FixedAllocator -> runtime -> candidate -> verification -> AcceptedResult -> next WorkUnit tests/test_reference.py::test_two_nodes_reconstruct_and_export; reviewer local run of the 5 suites: 44/44 passed; exact-HEAD CI run #2030 success
First accepted output is explicit second input; duplicates/stale/uncertain do not advance or duplicate advance_work_unit binds artifact:sha256 predecessor; test_stale_receipt_cannot_change_accepted_work; store claim refuses uncertain retry without absent/idempotent proof; forge duplicate/stale tests
Restart at commit/send/receipt and lost-context preserves truth, reconciles before retry; no auto merge/deploy test_restart_boundaries (attempts stay 1), test_lost_context_does_not_advance_or_retry, CLI resume tests; export pins automatic_merge/automatic_deploy false; installed-CLI proof asserts the same
Forgejo PR + attempts/identities/resources/verification/remediation/interruptions/unknowns export deliver_reference_pr exact-head with durable synthetic transport; reference_export now also gates identity and exports cancellations with target_terminal
CLI uses shared application layer; offline suite needs no live services offline and live compositions both call advance_work_unit; ports/application.py imports only core + ports; reviewer grep confirms zero ports/adapters imports in core
Honest trust/isolation mode TrustMode.TRUSTED_DEVELOPMENT, isolation: "none; deterministic synthetic worker" / "not attested", no credential loading in the diff, README limitations

Owner Blocker Remediation Verification

O1 (identity across receipt restart) — fixed. Execution requests now carry requested-only identity (RuntimeIdentity(model_id, None, None, ...) at ports/application.py:150,168 and reference_live.py:260); pre-dispatch resolution is no longer asserted. Acceptance is gated (ports/application.py:178-206): the observation identity must match the allocation and attempt, then either a currently resolved identity is persisted immediately or strictly re-validated immutable persisted evidence (exact key set and values) must exist, otherwise identity_unavailable. CodexRuntime resolution evidence originates only from the actual thread/start response (codex_runtime.py:166-170); a receipt-only restore yields resolved=None, which cannot accept. reference_export refuses satisfied units lacking matching durable identity, and both run_reference and run_live_reference invoke it before any PR effect, so legacy accepted records can neither export success nor create a PR. Covered by tests/test_reference_identity.py (4 tests), including the exact owner boundary (crash after the accepted receipt, before identity persistence) asserting identity_unavailable, no acceptance, one start.

O2 (blind cancellation reissue) — fixed. Cancellation is its own durable operation cancel:{attempt_id} with immutable intent; on first attempt it is claimed and durably observed unknown before runtime.cancel (reference_live.py:264-274). Restarts skip resend via the attempts == 0 gate, and the store independently refuses re-claim of an uncertain operation without an absent/idempotent proof (sqlite_store.py:526-527) — double enforcement. Target settlement is recorded only from a terminal observation of the exact accepted handle on the target operation; cancellation delivery stays unknown; export exposes cancellations[].target_terminal. Covered by test_observation_budget_and_expiry_survive_restart (12 parametrized combinations) asserting cancel_calls == 1 and starts == 1 across repeated restarts, deadline expiry, read failures, and export stability.

Architecture / Information Flow

Dependency direction preserved: adapters -> ports -> core; core remains clean of ports/adapters imports. Moving OperationRecord into ports/program_store.py with the ApplicationStore protocol (including the new find_artifact, which distinguishes absent from corrupt evidence via CorruptHistory) is the right shape. Authority stays in code: every transition routes through durable admit/admit_with_intent/claim/observe/reconcile; uncertain effects are never retried blindly; no merge/deploy path exists.

Blocking Issues

None (B0) at a895a33d47e37b661cf02a4c33a28798c77a124e.

Non-blocking Suggestions

  • S1 (carry-over, unchanged) SQLiteProgramStore.operations() re-reads each operation individually (N+1); bounded for this application.
  • S2 (carry-over) pr-commit/pr-send/pr-receipt are covered at the delivery layer but not end-to-end through main().
  • S3 (carry-over) run_live_reference collapses intermediate conditions (e.g. lease-held waiting) into budget_exhausted; durable per-operation status remains inspectable via export.
  • S4 (new, minor) a KeyboardInterrupt raised by a synthetic interrupt fault propagates out of run_live_reference before the interruption:live-budget intent is written; durable cancellation state remains inspectable. Fault-injection path only.
  • S5 (new, minor) advance_work_unit returns accepted early for already-SATISFIED units without re-checking identity evidence; the export/PR boundary re-validates in both delivery paths, so the effect layer holds.

Questions for the Author

None blocking.

Security / Privacy Notes

reference_git runs a resolved executable with controller-built arguments, no shell, isolated config, fixed identity/dates, 10s timeout; prepare_reference_directory refuses symlinked/existing checkouts; the live collector rejects symlinked/oversized result.txt; object_source must be a controller-owned bare repository outside the workspace. No secrets, tokens, or credential loaders in the diff; live authorization remains a caller-supplied predicate with a finite deadline.

Test / Documentation Gaps

Minor only (S2, S4). README truthfully documents the new identity and cancellation semantics, including that a receipt-only restart reports identity_unavailable and that exports distinguish uncertain cancellation delivery from an observed terminal target.

Follow-Up Candidates

None meet the durable/distinct/actionable bar; S1-S5 are ordinary engineering notes.

Overall Recommendation

APPROVE for frozen head a895a33d47e37b661cf02a4c33a28798c77a124e — blocking findings: none (B0). Owner blockers O1 and O2 are independently verified fixed with dedicated regression tests, exact-HEAD CI (#2030) and the reviewer's local offline run (44/44) pass. This is the independent reviewer's substantive verdict for exactly this HEAD; the previously stored review 647 for c5448d9c is stale and does not apply. Due to the shared-author identity limitation recorded above, the persisted Forgejo state is COMMENT, not a formal APPROVED review, and no formal platform approval is claimed.

## PR Review: [K7] Add CLI reference slice and restart/recovery proof (#27) **Repository:** Creatidy/creatidy-kernel **Branch:** `issue-10-cli-recovery` -> `develop` **Frozen head:** `a895a33d47e37b661cf02a4c33a28798c77a124e` (frozen base `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`) **Linked issue:** #10 ([K7] CLI reference slice and restart/recovery proof) **Identity limitation (recorded):** the configured Forgejo MCP account is `kilo` (id 8), the PR author. A formal `APPROVED` review was submitted first and rejected by Forgejo with `MCP error -32603: create pull review err: approve your own pull is not allowed`. This stored `COMMENT` therefore preserves the substantive independent-review verdict below; it is **not** a formal Forgejo approval. ### Summary Whole-PR independent review of the remediated HEAD (owner blockers O1/O2 fixed in `fix: preserve identity and cancellation across restart`, delta +330/-16 over 8 files). The PR adds a thin `creatidy-kernel reference`/`export` CLI over the shared application step (`ports/application.py::advance_work_unit`), a durable deterministic offline runtime and forge fixture, an opt-in finite-budget live composition, `OperationRecord`/`ApplicationStore` at the ports level, and installed-wheel CLI proof. ### Intent / Acceptance Evidence | Issue criterion | Independent evidence at frozen head | | --- | --- | | Offline two-node flow Program -> READY -> FixedAllocator -> runtime -> candidate -> verification -> AcceptedResult -> next WorkUnit | `tests/test_reference.py::test_two_nodes_reconstruct_and_export`; reviewer local run of the 5 suites: 44/44 passed; exact-HEAD CI run #2030 `success` | | First accepted output is explicit second input; duplicates/stale/uncertain do not advance or duplicate | `advance_work_unit` binds `artifact:sha256` predecessor; `test_stale_receipt_cannot_change_accepted_work`; store `claim` refuses uncertain retry without `absent`/`idempotent` proof; forge duplicate/stale tests | | Restart at commit/send/receipt and lost-context preserves truth, reconciles before retry; no auto merge/deploy | `test_restart_boundaries` (attempts stay 1), `test_lost_context_does_not_advance_or_retry`, CLI resume tests; export pins `automatic_merge`/`automatic_deploy` false; installed-CLI proof asserts the same | | Forgejo PR + attempts/identities/resources/verification/remediation/interruptions/unknowns export | `deliver_reference_pr` exact-head with durable synthetic transport; `reference_export` now also gates identity and exports `cancellations` with `target_terminal` | | CLI uses shared application layer; offline suite needs no live services | offline and live compositions both call `advance_work_unit`; `ports/application.py` imports only `core` + `ports`; reviewer grep confirms zero `ports`/`adapters` imports in `core` | | Honest trust/isolation mode | `TrustMode.TRUSTED_DEVELOPMENT`, `isolation: "none; deterministic synthetic worker"` / `"not attested"`, no credential loading in the diff, README limitations | ### Owner Blocker Remediation Verification **O1 (identity across receipt restart) — fixed.** Execution requests now carry requested-only identity (`RuntimeIdentity(model_id, None, None, ...)` at `ports/application.py:150,168` and `reference_live.py:260`); pre-dispatch resolution is no longer asserted. Acceptance is gated (`ports/application.py:178-206`): the observation identity must match the allocation and attempt, then either a currently resolved identity is persisted immediately or strictly re-validated immutable persisted evidence (exact key set and values) must exist, otherwise `identity_unavailable`. `CodexRuntime` resolution evidence originates only from the actual `thread/start` response (`codex_runtime.py:166-170`); a receipt-only `restore` yields `resolved=None`, which cannot accept. `reference_export` refuses satisfied units lacking matching durable identity, and both `run_reference` and `run_live_reference` invoke it before any PR effect, so legacy accepted records can neither export success nor create a PR. Covered by `tests/test_reference_identity.py` (4 tests), including the exact owner boundary (crash after the accepted receipt, before identity persistence) asserting `identity_unavailable`, no acceptance, one start. **O2 (blind cancellation reissue) — fixed.** Cancellation is its own durable operation `cancel:{attempt_id}` with immutable intent; on first attempt it is claimed and durably observed `unknown` **before** `runtime.cancel` (`reference_live.py:264-274`). Restarts skip resend via the `attempts == 0` gate, and the store independently refuses re-claim of an uncertain operation without an `absent`/`idempotent` proof (`sqlite_store.py:526-527`) — double enforcement. Target settlement is recorded only from a terminal observation of the exact accepted handle on the target operation; cancellation delivery stays `unknown`; export exposes `cancellations[].target_terminal`. Covered by `test_observation_budget_and_expiry_survive_restart` (12 parametrized combinations) asserting `cancel_calls == 1` and `starts == 1` across repeated restarts, deadline expiry, read failures, and export stability. ### Architecture / Information Flow Dependency direction preserved: `adapters -> ports -> core`; `core` remains clean of `ports`/`adapters` imports. Moving `OperationRecord` into `ports/program_store.py` with the `ApplicationStore` protocol (including the new `find_artifact`, which distinguishes absent from corrupt evidence via `CorruptHistory`) is the right shape. Authority stays in code: every transition routes through durable `admit`/`admit_with_intent`/`claim`/`observe`/`reconcile`; uncertain effects are never retried blindly; no merge/deploy path exists. ### Blocking Issues None (B0) at `a895a33d47e37b661cf02a4c33a28798c77a124e`. ### Non-blocking Suggestions - **S1** (carry-over, unchanged) `SQLiteProgramStore.operations()` re-reads each operation individually (N+1); bounded for this application. - **S2** (carry-over) `pr-commit`/`pr-send`/`pr-receipt` are covered at the delivery layer but not end-to-end through `main()`. - **S3** (carry-over) `run_live_reference` collapses intermediate conditions (e.g. lease-held `waiting`) into `budget_exhausted`; durable per-operation status remains inspectable via export. - **S4** (new, minor) a `KeyboardInterrupt` raised by a synthetic interrupt fault propagates out of `run_live_reference` before the `interruption:live-budget` intent is written; durable cancellation state remains inspectable. Fault-injection path only. - **S5** (new, minor) `advance_work_unit` returns `accepted` early for already-SATISFIED units without re-checking identity evidence; the export/PR boundary re-validates in both delivery paths, so the effect layer holds. ### Questions for the Author None blocking. ### Security / Privacy Notes `reference_git` runs a resolved executable with controller-built arguments, no shell, isolated config, fixed identity/dates, 10s timeout; `prepare_reference_directory` refuses symlinked/existing checkouts; the live collector rejects symlinked/oversized `result.txt`; `object_source` must be a controller-owned bare repository outside the workspace. No secrets, tokens, or credential loaders in the diff; live authorization remains a caller-supplied predicate with a finite deadline. ### Test / Documentation Gaps Minor only (S2, S4). README truthfully documents the new identity and cancellation semantics, including that a receipt-only restart reports `identity_unavailable` and that exports distinguish uncertain cancellation delivery from an observed terminal target. ### Follow-Up Candidates None meet the durable/distinct/actionable bar; S1-S5 are ordinary engineering notes. ### Overall Recommendation **APPROVE** for frozen head `a895a33d47e37b661cf02a4c33a28798c77a124e` — blocking findings: none (B0). Owner blockers O1 and O2 are independently verified fixed with dedicated regression tests, exact-HEAD CI (#2030) and the reviewer's local offline run (44/44) pass. This is the independent reviewer's substantive verdict for exactly this HEAD; the previously stored review 647 for `c5448d9c` is stale and does not apply. Due to the shared-author identity limitation recorded above, the persisted Forgejo state is `COMMENT`, not a formal `APPROVED` review, and no formal platform approval is claimed.
Author
Member

Delivery Ledger: Completed Full Review Cycle 2

  • Issue #10; same PR #27 and issue-10-cli-recovery -> develop branch.
  • Exact reviewed HEAD: a895a33d47e37b661cf02a4c33a28798c77a124e; frozen base: 8ffa99deaa8dab96167c7c0f8e55b7204a40b74f. PR metadata and clean local branch rechecked after review; unchanged.
  • Profile repository_review; monotone L4 / reasoning=5 / coding=5 / tool_use=5; requires_tool_use=true and requires_reasoning_mode=true. Unknown author capability floor not guessed.
  • Router selected zai/glm-5.3/max; dispatched zai-coding-plan/glm-5.3/max through the documented provider adapter; no fallback.
  • Router catalog_version=4; profile_policy_version=8; resource_policy_version=1; degraded=false.
  • Fresh reviewer session ses_f1ba8a83cffei1tk4WFohByTqY; dispatch request am-1790537324387-9lsf06; DISPATCH_VERIFIED from explicit Agent Manager resolution GLM-5.3 (zai-coding-plan) · max.
  • Completed independent whole-PR review 648, exact commit binding and stale=false fetched independently.
  • substantive_verdict=APPROVE, read from ### Overall Recommendation; forgejo_review_state=COMMENT; platform_approval_recorded=false.
  • platform_identity_limitation: configured reviewer kilo id 8 is the PR author. Formal APPROVED submission returned MCP error -32603: create pull review err: approve your own pull is not allowed; stored COMMENT preserves the substantive verdict. No formal platform approval is claimed.
  • Blocking findings: 0 (B0). Owner findings O1 and O2 independently verified fixed. S1-S5 are recorded non-blocking observations, not new blockers or scope expansion.
  • Remediation status done for O1/O2; no changes after full review; resulting HEAD unchanged. remediation_used=1/10, valid completed full reviews=2. Prior review 647 remains historical and does not apply to this HEAD.

Final Exact-HEAD Evidence

  • make check: passed, 553 tests, all formatting/lint/type/import/secret/diff checks.
  • make package-check: passed, wheel/sdist rebuild and isolated installed CLI replay/export.
  • make audit: passed, no known vulnerabilities.
  • Canonical Forgejo CI run 59 / id 2030: success, exact full SHA confirmed, 2026-09-27 19:27:26–19:28:04 UTC. The repository workflow's check job runs all three gates.
  • Dedicated regression coverage proves receipt-only Codex recovery with unavailable identity cannot accept, persisted resolution survives restart, offline identity is reconstructed, and uncertain cancellation is not blindly repeated across restart/expiry.
  • No live provider scenario executed; no K8/product routing integration added. Trust and platform limitations remain documented. Inaccessible branch-protection rules are not inferred or bypassed.

READY_FOR_OWNER_MERGE for a895a33d47e37b661cf02a4c33a28798c77a124e. This is readiness, not owner merge approval. PR #27 remains unmerged, issue #10 open, main untouched.

## Delivery Ledger: Completed Full Review Cycle 2 - Issue #10; same PR #27 and `issue-10-cli-recovery` -> `develop` branch. - Exact reviewed HEAD: `a895a33d47e37b661cf02a4c33a28798c77a124e`; frozen base: `8ffa99deaa8dab96167c7c0f8e55b7204a40b74f`. PR metadata and clean local branch rechecked after review; unchanged. - Profile `repository_review`; monotone L4 / reasoning=5 / coding=5 / tool_use=5; requires_tool_use=true and requires_reasoning_mode=true. Unknown author capability floor not guessed. - Router selected `zai/glm-5.3/max`; dispatched `zai-coding-plan/glm-5.3/max` through the documented provider adapter; no fallback. - Router catalog_version=4; profile_policy_version=8; resource_policy_version=1; degraded=false. - Fresh reviewer session `ses_f1ba8a83cffei1tk4WFohByTqY`; dispatch request `am-1790537324387-9lsf06`; `DISPATCH_VERIFIED` from explicit Agent Manager resolution `GLM-5.3 (zai-coding-plan) · max`. - Completed independent **whole-PR** [review 648](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/pulls/27#issuecomment-12389), exact commit binding and stale=false fetched independently. - `substantive_verdict=APPROVE`, read from `### Overall Recommendation`; `forgejo_review_state=COMMENT`; `platform_approval_recorded=false`. - `platform_identity_limitation`: configured reviewer `kilo` id 8 is the PR author. Formal APPROVED submission returned `MCP error -32603: create pull review err: approve your own pull is not allowed`; stored COMMENT preserves the substantive verdict. No formal platform approval is claimed. - Blocking findings: **0 (B0)**. Owner findings **O1 and O2 independently verified fixed**. S1-S5 are recorded non-blocking observations, not new blockers or scope expansion. - Remediation status `done` for O1/O2; no changes after full review; resulting HEAD unchanged. **`remediation_used=1/10`**, valid completed full reviews=2. Prior review 647 remains historical and does not apply to this HEAD. ## Final Exact-HEAD Evidence - `make check`: passed, **553 tests**, all formatting/lint/type/import/secret/diff checks. - `make package-check`: passed, wheel/sdist rebuild and isolated installed CLI replay/export. - `make audit`: passed, no known vulnerabilities. - Canonical Forgejo [CI run 59 / id 2030](https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/59): **success**, exact full SHA confirmed, 2026-09-27 19:27:26–19:28:04 UTC. The repository workflow's check job runs all three gates. - Dedicated regression coverage proves receipt-only Codex recovery with unavailable identity cannot accept, persisted resolution survives restart, offline identity is reconstructed, and uncertain cancellation is not blindly repeated across restart/expiry. - No live provider scenario executed; no K8/product routing integration added. Trust and platform limitations remain documented. Inaccessible branch-protection rules are not inferred or bypassed. **READY_FOR_OWNER_MERGE** for `a895a33d47e37b661cf02a4c33a28798c77a124e`. This is readiness, not owner merge approval. PR #27 remains unmerged, issue #10 open, `main` untouched.
adrian.tkacz deleted branch issue-10-cli-recovery 2026-09-27 20:59:49 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Creatidy/creatidy-kernel!27
No description provided.