# Plan review log

Date: 2026-09-29.
Plan: ../IMPLEMENTATION-PLAN.md.
Status: three-model plan review converged on revision 29. K3 and Opus reviewed the full snapshot; GLM coverage is scoped and cumulative. Platform feasibility and pending UX choices remain open.

## Requested reviewers

- Requested Opus 5.5: reviewed through catalog ID claude-code/claude-opus-5-5.
- kimi-code/k3-256k: two reviews completed.

## Readiness failure

Ran `pioneer doctor` outside the enclosing sandbox, as required by the Pioneer skill. Terminal exit status: 1. Pi version: 0.84.2.

Diagnostic: PI_EXTENSION_LOAD_FAILED.

> Pi extension preparation or startup failed. entry 1: missing dependency. Check the enabled extensions with normal Pi. Review extensions must work with private configuration, restricted tools and proxy networking; raw diagnostics are suppressed to protect credentials.

The zero model count is from a failed readiness check. It does not establish that the requested models are unavailable.

No review actors started, so no review reports or work logs were produced. No extensions, providers, or Pi configuration were changed. The Pioneer skill requires stopping on this diagnostic rather than bypassing it.

## Resume procedure

Resolve the enabled extension dependency through normal Pi, then rerun Pioneer readiness. Run both exact requested models against the plan. Save each review and the plan SHA-256. Apply substantive corrections, consult the user before any UX regression, and repeat both reviews on the same final revision until neither reports a substantive unresolved finding.

## Planning boundaries

No apps, privileged services, firewall rules, authentication settings, or credential stores were changed. Platform feasibility tests remain planned work. No reviewer findings exist yet.

## Readiness retry after update check

The user authorized updating Pioneer if needed and confirmed that its controller must run outside the enclosing sandbox.

- `pioneer --version`: 0.4.0.
- `pioneer check-update`: Pioneer 0.4.0 is already up to date.
- `pioneer doctor`: explicitly escalated outside the enclosing sandbox; terminal exit 1.
- Result: the same PI_EXTENSION_LOAD_FAILED diagnostic, entry 1 missing dependency.

No update was required. The retry confirms that moving the controller outside the sandbox does not resolve this extension failure. Both requested reviews remain unstarted. No provider substitution or extension bypass was attempted.

## Plain Pi fallback authorized by the user

The user explicitly authorized plain Pi outside the sandbox for this plan-only review. Each invocation disables all tools, context-file discovery, skills, and prompt templates. Provider extensions remain enabled. The controller captures stdout and stderr separately; no reviewer can edit the plan through tools.

### Model resolution

The literal `claude-code/opus-5.5` was not a configured model ID and returned HTTP 404, exit 1. Catalog inspection showed the intended Opus 5.5 model is `claude-code/claude-opus-5-5`; subsequent reviews use that exact configured ID. This is the same requested model and provider, not a fallback model. Kimi uses `kimi-code/k3-256k`.

### Round 1

- Input: round-1-plan.md.
- SHA-256: 054111627e474840b68c35b19b2a068ad589f898d8c195325560249de403fd9d.
- Opus: exit 0; round-1-opus.md; eight substantive findings.
- Kimi: exit 0; round-1-kimi.md; three substantive findings.
- Disposition: round-1-disposition.md. All corrections applied or clarified in revision 2 without reducing UX.
- Stderr: round-1-opus.stderr.txt and round-1-kimi.stderr.txt; both empty on successful runs. The initial invalid-ID diagnostic is preserved separately.

### Round 2

- Input: round-2-plan.md.
- SHA-256: c6b6d31763afcf7a276b854da8cabad02ff4828e5dca2debcde31be0acd47479.
- Both requested reviewers completed through plain Pi, exit 0, with nonempty reports and empty stderr.
- Reports: round-2-opus.md and round-2-kimi.md.
- Disposition: round-2-disposition.md.
- Convergence pending. Feasibility gates remain implementation work, not verified platform claims.

### Revision 3 / pending user choice

All second-round UX-preserving corrections are in IMPLEMENTATION-PLAN.md. No third-round snapshot or review has started.

The user was asked to choose between:

1. Dismiss Remozio requests without biometrics; require one biometric for either Allow or Deny in Little Snitch.
2. Allow Little Snitch Deny without biometrics, including permanent rules, with the exact scope authenticated through the paired connection.

Do not pick on the user's behalf. The answer determines the denial-versus-external-action protocol and normal UX. Once answered, reconcile sections 1, 6, and 9, freeze revision 3, and have both requested models review that same snapshot. Continue until both report no substantive findings.

The reviewers had tools disabled, received the complete frozen plan via file attachment, and performed plan-only reasoning. No runtime feasibility, app automation, security settings, or privileged installation was tested.


### Confirmed action policy and round 3

The user confirmed no biometrics for cancel, deny-once, and Little Snitch allow-once. The default Forever and every reusable rule decision require biometrics. Temporary and session rules count as reusable rules. Command and 1Password approvals retain biometrics.

Sections 1, 2, 6, 7, 9, and 10 now distinguish biometric and non-biometric authority. Non-biometric actions use a separate enrolled decision key with end-to-end request binding. The relay cannot mint them. Both host authorities enforce scope and single-use dispatch.

- Input: round-3-plan.md.
- SHA-256: 1bc49a15da7496df0976de0281bac762abaca9a25a6b2f5feb256cf4c49e3e9c.
- Requested models: claude-code/claude-opus-5-5 and kimi-code/k3-256k.
- Plain Pi fallback remains authorized; tools and context discovery are disabled.
- Reviews are running. Status JSON files preserve terminal exit status and input hash.

### Round 3 completion and round 4

Both round-3 reviewers exited 0 with nonempty reports and empty stderr. See round-3-disposition.md for all findings, corrections, and user clarifications.

Round 4 input: round-4-plan.md. SHA-256: e457596b28ed386acefe531fd34e301a0a410f49c66d87caee0cbd0ef9c93902. Both requested models are reviewing this exact snapshot and the previous disposition. No convergence claim yet.

### Round 4 completion and round 5

Round 4: both reviewers exited 0 with nonempty reports and empty stderr. Kimi reported NO SUBSTANTIVE FINDINGS. Opus reported two low-severity gaps, both corrected; see round-4-disposition.md.

Round 5 input: round-5-plan.md. SHA-256: 35a5db40f0565b4a13f6e89a99594fdeb1210a1e42dbfdb9af502a3313975cb9. Both models will review the same frozen revision 5.

### Round 5 completion / convergence

Both requested models exited 0 with nonempty reports and empty stderr. Both reported NO SUBSTANTIVE FINDINGS on the same revision 5, SHA-256: 35a5db40f0565b4a13f6e89a99594fdeb1210a1e42dbfdb9af502a3313975cb9. Reports: round-5-opus.md and round-5-kimi.md. Disposition: round-5-disposition.md.

This is plan-review convergence only. Platform feasibility and implementation validation remain the stages specified in the plan. No security settings or privileged components were changed as part of this review.

## Review of revision 12: three-model pass

Date: 2026-09-30. Scope: the complete plan, including every addition after revision 5.

Pioneer doctor still reports `PI_EXTENSION_LOAD_FAILED`: the compose-pi opencode extension cannot resolve its pi-ai compatibility dependency in the isolated runtime. The previously authorized plain Pi fallback is used. Provider extensions stay enabled; tools, context discovery, skills, and templates are disabled. No provider configuration was changed.

Round 6 snapshot: `round-6-plan.md`. SHA-256: `31db9eeb87ef97256f9465c00088f0738c29be8c50c72cf50478c482c1be8463`.

- K3: `kimi-code/k3-256k`, exit 0, two findings.
- Opus: `claude-code/claude-opus-5-5`, exit 0, three findings.
- GLM: `zai/glm-5.3`, exit 0 but empty output; not a successful review. Same-model retry uses structured event capture.

Reports, stderr, and status files preserve each outcome. See `round-6-disposition.md` for the corrections. This historical round produced revision 13; later rounds below supersede it.

## Rounds 7–10

Round 7 reviewed revision 13. K3 had no substantive findings. Opus had three; all were corrected in revision 14. GLM's authority scope was clean. Its two larger scopes ended at the output limit without final reports. These failures are retained and are not counted as clean reviews.

Round 8 reviewed revision 14. K3 was clean. GLM completed seven bounded scopes covering all 18 sections; each was clean. Opus found three update-lifecycle issues, corrected in revision 15.

Round 9 reviewed revision 15. K3 and GLM's changed scopes were clean. The GLM coverage JSON verifies unchanged earlier sections exactly. Opus found three low-severity gaps, corrected in revision 16.

Round 10 input: revision 16, SHA-256 `239d5993e339c249a63d621b0e69e3897c66fffac15ecb8fbabffab4027d2ff6`. K3 and Opus review the whole plan; GLM reviews changed sections 16–18 and related command/crash/UI interactions. `round-10-glm-coverage.json` records unchanged prior coverage. Opus found one cloud-management authority gap, corrected in revision 17. K3 and GLM completed their scopes without substantive findings.

All successful reviews preserve exit status, nonempty reports, stderr, and input hashes. GLM structured events additionally preserve stop reasons. Raw events are local evidence only and are not published to the site.

## Rounds 11–13

Round 11 reviewed revision 17. K3 and Opus found recipient-mapping authority, audit privacy, and remote routing-control gaps. GLM identified the protected placement required for cloudflared. All corrections are documented in round-11-disposition.md and applied in revision 18.

Round 12 reviewed revision 18. K3 and GLM authority/history scopes were clean. Opus found two gateway recovery and token-challenge gaps, corrected in revision 19. GLM management emitted a partial report with stop reason length. It is not counted as clean. See round-12-disposition.md.

Round 13 reviews revision 19. Opus found a restored-trust-state detection gap. Revision 20 adds an explicit feasibility gate and applies verified revocation evidence locally. K3 and both GLM scopes completed with no substantive findings. Normal offline operation and the agreed approval UX remain requirements.

## Rounds 14–15

Round 14 reviewed revision 20. K3 was clean. Opus identified the need for the trust witness to cover floors, policy and replay state, corrected in revision 21. GLM emitted a clean report, but its Pi process exited 1 after a usage-meter extension stale-context error. It is not counted as a successful review.

Round 15 reviews revision 21. Opus found two issues: backup-clonable Mac identity and audit cursor collisions after restoration. Revision 22 makes authority-key custody an explicit gate and gives restored audit history a fresh authenticated epoch. Migration interaction remains a user-choice gate; a question was sent and no extra step has been adopted. K3 completed cleanly; GLM completed its gateway scope cleanly.

## Round 16

Frozen revision 22: `392c9cd7f171f2024ea08f35688693aa9c389737788852e2298b593b6c7dc88b`. K3 and Opus review the complete plan. GLM reviews changed identity, audit, and gateway text in overlapping scopes. Exact unchanged earlier text retains successful scoped coverage. Opus found one audit-only restore gap, corrected in revision 23. K3 and both GLM scopes were clean.

## Rounds 17–18

Round 17 reviewed revision 23. Opus and GLM were clean. K3 found two audit issues: recovery after a writer conflict and ambiguity in the epoch generation field. Revision 24 explicitly defines writer exclusion, admission closure during uncertain recovery, and immutable epoch-creation generation metadata. See round-17-disposition.md.

Round 18 reviews frozen revision 24, SHA-256 `875893ce0879fbee5e00ec2f4ea373863231b75dbc4b3a57ff9e72671288ba51`. K3 and GLM were clean. Opus found restart persistence and rejection-flood gaps, corrected in revision 25. Migration UX remains an unresolved user preference; no additional step has been adopted.

## Round 19

Frozen revision 25: `83ed95d7636ef1f5e24f9bd5c2a2042cb2a73fdfae40587a0741d23161805e66`. K3 and GLM were clean; Opus identified two recovery-model issues, corrected in revision 26. The previous K3 process has completed cleanly and is reconciled in round-18-disposition.md.

## Round 20

Frozen revision 26: `e109308dc3797d91e317eed647c6e29d05ba80f49e280b03135dd8edcc56516d`. K3 completed cleanly; Opus found the pre-login witness availability gap, corrected in revision 27. GLM hit its output limit with no final report. A local GLM excerpt selector initially failed before model invocation; the corrected selector includes the section 17 recovery text.

## Round 21

Frozen revision 27: `d658fd713b319c9f17600ae29edc410366dbebcc31af937b4eed48bfadec3128`. K3 and Opus review the full plan. GLM reviews the changed recovery scope with exact-text coverage retained elsewhere.

## Rounds 21–22

Round 21: K3 and GLM were clean. Opus identified live witness-commit ordering and the starting-state no-admission retry gap. Revision 28 resolves both without extra prompts; see round-21-disposition.md.

Round 22 frozen revision 28: `20ad0a6a14d8f2ca44bc61d76d921268c8bcb684a9cbeca54bf6299f361ed7c4`. K3 and Opus review the complete plan. GLM completed both scopes cleanly. Opus was clean. K3 found one low-severity busy-state admission gap, corrected in revision 29.

## Round 23

Frozen revision 29: `9532dd1994201cf6efba081b0ac014a89269d2565b18f3a6a9115fc94e1b10d7`. The unified busy-state contract preserves bounded automatic retry instead of adding manual-only retry. K3 and Opus review the whole plan; GLM reviews changed admission rules with exact cross-section excerpts.

## Final round 23: review convergence

Revision 29, SHA-256 `9532dd1994201cf6efba081b0ac014a89269d2565b18f3a6a9115fc94e1b10d7`. K3 and Opus completed full-plan reviews without substantive findings. GLM completed its changed scope without substantive findings. The exact-text manifest `round-23-glm-coverage.json` covers all 18 sections. It excludes partial output and failed processes.

GLM used bounded, overlapping scopes because larger requests exhausted the provider output limit. Thinking settings were not changed. Raw event logs remain private local evidence and are not published.

Pending user decision: the precise Mac migration interaction and whether one-time phone recovery is acceptable. No answer has been inferred. Platform experiments, idle threshold and retention choices remain planned work.

At the time of round 23 publication, only the source status paragraph differed from the reviewed snapshot. Revision 30 later added the optional ADB deployment bridge; the round 23 convergence claim does not cover it. Normal approval UX remains unchanged.

## Round 24: optional ADB bridge

Revision 30 added section 19 and small cross-references. Pioneer `kimi-code/k3-256k` completed a full-plan review with concrete findings, retained in `round-24-kimi.md`. Pioneer `zai/glm-5.3` first attempted a full-plan review, then resumed the same session; both attempts hit the response length limit without a report and do not count. A new exact-text scoped review completed successfully and is retained in `round-24-glm.md`. `round-24-disposition.md` maps the findings to revision 31 changes and open gates.

The new bridge's local ADB listener, Android service behavior, and session-admission UX remain feasibility or user-decision gates. Review of the amended revision 31 text is in progress. Do not extend round 23's approval-plan convergence to section 19.

## ADB bridge rounds 25–27

Round 25 reviewed revision 31. GLM-5.3 completed its focused scope without substantive findings (`round-25-glm.md`). Kimi K3 identified missing enforcement of approval priority across processes and no independent result reconciliation after a bridge-hosting app update (`round-25-kimi.md`). Revision 32 added authenticated Mac-local priority signaling, Android app-local scheduling, and an expected-artifact record; see `round-25-disposition.md`.

Round 26 reviewed revision 32. GLM found that comparing only the expected package state could misclassify a retained prior state (`round-26-glm.md`). Kimi found that priority could resume after lease expiry without an authenticated clear, that the proposed phone-to-Mac signal had no accepted path, and that the expected-artifact record was not explicitly durable before install (`round-26-kimi.md`). Revision 33 uses a renewable fail-closed Mac-local lease, app-local phone scheduling, and a private pre-install operation record; see `round-26-disposition.md`.

Round 27 reviewed revision 33. GLM completed its focused scope without substantive findings (`round-27-glm.md`). Kimi found that a third observed package state did not prove an interrupted install failed, and that ordinary interrupted installs lacked an automatic reconciliation trigger (`round-27-kimi.md`). Revision 34 narrows reports to observed package state and reconciles all interrupted installs on a new paired ADB session; see `round-27-disposition.md`.

The reports above are focused exact-text Pioneer reviews, not new full-plan reviews. Failed or length-truncated attempts are not counted as clean. The stronger local ADB client boundary, Android 17 runtime behavior, Access WebSocket behavior, and phone session-admission policy remain explicit gates before shipping.

## Round 28: lost install result

Both Pioneer `zai/glm-5.3` and `kimi-code/k3-256k` completed focused reviews of the same revision 34 section 19 bundle. Both found substantive problems with retrospective command-outcome inference and the evidence lifecycle. Reports: `round-28-glm.md`, `round-28-kimi.md`; corrections: `round-28-disposition.md`. Revision 35 keeps the historical command outcome unknown after a lost response and displays any later package observation separately. Its focused review is pending.

## Round 29: durable command outcome

Kimi K3 completed a focused review of revision 35 and found Mac-crash orphaning, teardown/acknowledgment ordering, and a contradiction with the pending phone session-admission policy (`round-29-kimi.md`). GLM-5.3's attempt produced no report and is excluded. Revision 36 addresses the findings as recorded in `round-29-disposition.md`. Both requested models are reviewing the changed clauses in a bounded follow-up.

## Round 30: serialized bridge ledger

GLM-5.3 and Kimi K3 completed focused exact-text reviews of revision 36 and found overlapping ledger, audit, retention, and admission-granularity gaps (`round-30-glm.md`, `round-30-kimi.md`). Revision 37 corrections are recorded in `round-30-disposition.md`. They have not yet been independently reviewed. Earlier frozen revision 29 approval-plan convergence remains separate from this bridge work.

## Round 31: focused bridge review convergence

Pioneer GLM-5.3 and Kimi K3 both completed focused exact-text reviews of the same revision 37 changed-clause bundle, each exiting 0 with a nonempty report and no substantive findings. Reports: `round-31-glm.md`, `round-31-kimi.md`; disposition: `round-31-disposition.md`. The reviewed scope is the serialized install ledger, atomic audit events, retention, later package observations, and admission granularity. The full section 19 design had earlier Kimi full-plan and GLM scoped reviews in round 24; subsequent corrections were reviewed in bounded scopes through round 31. This is focused bridge review convergence, not a new full-plan convergence claim.

Pending gates: Android 17 local ADB discovery and foreground-service behavior, Cloudflare Access WebSocket operation, stronger same-user local ADB client isolation or phone-side session authorization, and the user's phone admission and Ready-mode recovery choices. No platform feasibility claim follows from a clean design review.


## Revision 38: Multiple Macs in one Android app

Explicit many-to-many enrollment, a combined inbox, per-Mac status and routing, isolated keys and delivery registrations, and independent audit synchronization. Added cross-Mac acceptance cases. Existing ADB grants remain separate. These additions have not received independent model review; prior verdicts retain their original scope.


## Revision 39: Remote desktop presence and Android Away

Replaced the prior rule that dark or locked physical displays always override remote input. A fresh usable remote desktop session counts as presence. Added provider detection gates, disconnect checks, and explicit per-Mac Away controls in Android. These changed requirements await independent review.


## Revision 40: Android can only select Away

User correction: Android shows each Mac’s live or last-known status and can only set Away. Automatic and Present are Mac-only controls, also usable through remote desktop. The Mac authority rejects other phone-originated mode changes. Present replaces the previous At my Mac label. Offline controls cannot claim success or queue a later override. Independent review remains pending for revisions 38–40.


## Revision 41: Restore a previously connected ADB bridge

User selected best-effort automatic reconnection after updates and restarts, preserving pairing and valid grants. Explicit Stop and revocation cancel recovery. Reconnection cannot replay operations or revive expired authorization. Platform feasibility and the separate admission policy remain open; independent review is pending.


## Revision 42: Legacy ADB over encrypted mobile-data transport

User rejected the blanket legacy TCP ADB prohibition. Added an opt-in fallback with on-device plaintext hops and mandatory authenticated end-to-end bridge encryption. Recorded bootstrap, host authorization, listener exposure, stopping, and mode-transition requirements. Listener isolation is preferred, not a blanket feature prohibition; disclose wider exposure clearly. Independent review is pending.


## Revision 43: Platform baseline and native stack

User accepted macOS 26+, Apple Silicon only, and Android 17+ with Pixel support and best-effort other manufacturers. Recorded the Swift/SwiftUI/AppKit Mac direction, native Kotlin/Compose Android direction, process separation, and supporting stack choices. Human design review is complete; later additions and platform feasibility are not covered by earlier model verdicts.


## Revision 44: Consolidated product decisions

One self-hosted deployment per user; each Mac ships all services in one .app. No external application server or special Mac. Encrypted setup export provisions independent machines. Independent pairing and explicit re-enrollment; coordinated revocation requires per-target management authority. ADB is off by default, with persistent pair grants and unattended use when enabled. Explicit command frontend, automatic UI adapters, sideloaded Android updates, and configurable two-minute idle default. Replaced earlier pending decisions and external push-host assumptions. Changed scopes await independent review and platform experiments.


## Rounds 32–33: Final Pioneer GLM/Kimi pass

Pioneer 0.4.4 doctor passed outside the outer sandbox with no warnings or diagnostics. Both review actors retained Pioneer isolation. Exact models: zai/glm-5.3 and kimi-code/k3-256k; default thinking unchanged.

Round 32 froze revision 44 at SHA-256 c3ba1f40ad481f1b9e7511c282c9b94653bda3cdf9deace554245f4ace96f1ed. Kimi completed a full read with eight findings. GLM exited 1 with REVIEW_REPORT_MISSING and no report; it is an incomplete attempt, not a clean verdict.

Revision 45 addresses the findings in round-32-disposition.md. Round 33 froze SHA-256 8c6ae2b966a7d107e3a29c545b9f6ff01668f2545b6a2e659617f760803071de. Kimi verified all eight fixes and affected interactions with no substantive findings. The published status paragraph records this result; all remaining plan text is byte-identical to the frozen snapshot. Current GLM verification remains incomplete. No claim of two-model convergence is made.
