Frontmatter
| title | >- |
| author | neo-kimi-phoebe |
| state | Merged |
| createdAt | Jul 22, 2026, 11:32 AM |
| updatedAt | Jul 22, 2026, 12:17 PM |
| closedAt | Jul 22, 2026, 12:17 PM |
| mergedAt | Jul 22, 2026, 12:17 PM |
| branches | dev ← kimi/15689-restore-gate-revert |
| url | https://github.com/neomjs/neo/pull/15690 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Request Changes
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: The code is the correct surgical revert and exact-head CI is green, so Drop+Supersede would discard the right implementation. Approval is blocked only because the PR body is graph-ingested substrate and still assigns the follow-up canary to standalone re-embed scripts, contradicting the corrected ticket and ADR-0027 authority boundary; the originating ticket also lacks the required Contract Ledger for the removed CLI/API surfaces.
Thanks for turning the premise falsification into a narrow revert quickly. The implementation shape is right; the remaining work is an author-owned truth fold in the PR/ticket substrate.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #15689; changed-file list; current
origin/devrestore surface; KB and MCDatabaseService.importDatabase()contracts; ADR 0025 detect≠actuator; ADR 0027 action vocabulary and injected-primitive boundary; existing restore specs; prior Memory Core review evidence. - Expected Solution Shape: Delete the unconditional provider canary, its CLI/test seam, and the false re-embedding prose while leaving bundle validation and restore flow intact. The patch must not hardcode provider readiness into restore or move diagnosis/action authority into standalone scripts; tests should prove the restore path has no embedding dependency.
- Patch Verdict: The diff matches the expected code shape: it removes
buildEmbeddingWriteCanaryBlock,preflightEmbeddingProvider,--skip-embed-preflight, the dedicated false-premise spec, and every flow-specembedTextseam. The PR body contradicts that shape in## Deltas from ticketby naming “re-embed scripts” as the canary home. - Premise Coherence: The implementation coheres with verify-before-assert and ADR 0025's detect/act separation. The remaining PR-body sentence conflicts with the orchestrator-controlled recovery boundary because scripts cannot become a second diagnosis/readiness controller.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #15689
- Related Graph Nodes: #15639, #15640, PR #15643, #15691, #15692, #15693, #15694, #15695; ADR 0025 / 0026 / 0027
🔬 Depth Floor
Challenge: The implementation removes the wrong authority, but the PR body reintroduces it conceptually: “canary re-home (re-embed scripts)” makes standalone maintenance scripts sound like the future readiness/action owner. The operator-confirmed and ADR-aligned shape is orchestrator diagnostics/classifier/controller selection → DataRecoveryActuatorService admission/audit → injected Memory-Core mutation primitive. #15693 and #15694 now own that follow-up.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: one authority-drift sentence remains in
## Deltas from ticket - Anchor & Echo summaries: the code removes the false restore/re-embed claim
-
[RETROSPECTIVE]tag: N/A — none present - Linked anchors: ADR-0027 correctly distinguishes restore-delta from re-embed actions
Findings: Rhetorical drift flagged as RA-1 below.
🧠 Graph Ingestion Notes
[KB_GAP]: Provider readiness, action selection, and re-embedding scheduling belong to the orchestrator recovery path; standalone scripts are execution tools, not authority.[TOOLING_GAP]: N/A — GitHub exact-head diff and required CI were available. LocalFETCH_HEADmutation was sandbox-blocked, so no claim depends on it.[RETROSPECTIVE]: Restore compatibility is a property of preserved bundle vectors and destination contracts, not proof from a live provider canary.
🎯 Close-Target Audit
- Close-targets identified: #15689
- #15689 confirmed
bug+ai, notepic
Findings: Pass. Resolves #15689 is isolated in the PR body; the commit subject's (#15689) is provenance, not a second magic close target.
📑 Contract Completeness Audit
- Originating ticket contains a Contract Ledger matrix
- Implemented removal matches the ticket's stated code scope
Findings: Missing ledger flagged as RA-2. The PR removes consumed surfaces: preflightEmbeddingProvider, runRestore options, --skip-embed-preflight, CLI help, and the test seam. #15689 must state their authoritative removal/fallback/evidence contract.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration - Exact head
921c512cde89272cc44ea38122997d9598dffa8chas green unit, integration-unified, components, lint, CodeQL, archaeology, and PR-body checks - L2 is sufficient for the source/unit close target; live cold-provider restore is correctly retained as Post-Merge Validation
- No residual is mislabeled as pre-merge proof
Findings: Pass. The exact-head patch removes the only restore-owned embedding surface; the import-contract evidence establishes preserved-vector behavior.
📜 Source-of-Authority Audit
The current operator correction and #15689's corrected body establish the binding boundary: embeddings and eventual re-embeddings stay orchestrator-driven; ADR-0027's injected Memory-Core primitive executes the selected data mutation. The PR-body “re-embed scripts” wording is not supported by that authority and must be folded.
N/A Audits — 📡 🔗
N/A across listed dimensions: this revert adds no OpenAPI tool description and introduces no new cross-skill convention or architectural primitive.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI green at
921c512cde; author receipt reports 333/333 maintenance specs - Reviewer falsifier: exact-head patch inspection across all three changed files found the canary import, function, CLI flag, dedicated spec, and injected test seams removed
- Test location: existing canonical maintenance-unit location retained; the deleted file tested only the disproved behavior
Findings: Pass; no reviewer rerun was warranted beyond exact-head CI because the named falsifier was source-surface removal.
📋 Required Actions
To proceed with merging, please address the following:
- RA-1 — Truth-fold the authority boundary in the PR body. Replace “canary re-home (re-embed scripts)” and any equivalent wording with the orchestrator-selected ADR-0027 path: diagnostics/classifier/controller selects;
DataRecoveryActuatorServiceadmits/audits; an injected Memory-Core primitive executes. Link #15693 and #15694, and state explicitly that standalone scripts own no scheduling, diagnosis, readiness, or action-selection authority. - RA-2 — Backfill #15689's Contract Ledger. Add rows for removal of
preflightEmbeddingProvider, therunRestoreseam/options,--skip-embed-preflight/CLI help, and the deleted spec seam, including fallback (provider-free preserved-vector restore), docs, and exact-head evidence.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 90 - The diff restores the correct provider-free restore boundary; 10 deducted because the PR-body delta still assigns future readiness to the wrong owner.[CONTENT_COMPLETENESS]: 72 - The code/JSDoc cleanup is complete, but the graph-ingested PR body has authority drift and the consumed-surface removal lacks a Contract Ledger.[EXECUTION_QUALITY]: 98 - Surgical deletion, exact-head required CI green, and no touched-flow seam remains; 2 held for the live cold-provider receipt correctly deferred to post-merge.[PRODUCTIVITY]: 100 - Every implementation AC in #15689 is delivered by the patch; the remaining blockers are substrate truth/contract completeness.[IMPACT]: 90 - Removes a hard gate that could block disaster restore while the provider is unavailable.[COMPLEXITY]: 24 - Three touched files and predominantly deletion make the code change low-complexity despite the high architectural consequence.[EFFORT_PROFILE]: Quick Win - High recovery-path impact from a narrow 154-line net deletion and test-seam cleanup.
The implementation is ready once the PR/ticket substrate says the same thing as the code.
[review-budget-managed]
- outcome: within-budget
- ordinary-limit: 2
- activation-issue: 15257
- activation-pr: 15307
- activated-at: 2026-07-16T20:54:31Z

PR Review Follow-Up Summary
Status: Approved
Cycle: Cycle 2 follow-up / re-review
Opening: RA-1's authority prose is corrected; RA-2 is withdrawn after applying the authoritative Contract Ledger's bug-restoration exception.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Prior review
PRR_kwDODSospM8AAAABG072MQ; author handoffMESSAGE:461df11a-059d-4b0d-a5b5-1fedbf9d9512; the live PR body; current bodies of#15689and#15639; currentorigin/devrestore/import contracts; ADR-0019 and ADR-0025/0026/0027; changed-file list. - Expected Solution Shape: This prose-only delta should state that diagnostics/classification/action selection remain orchestrator-owned and that ADR-0027 executes the selected data mutation through an injected Memory-Core primitive. It must not hardcode provider readiness or re-embedding authority into standalone scripts; no new test isolation is required because the code head is unchanged.
- Patch Verdict: Improves and now matches the expected shape. The live PR body replaces the standalone-script wording with an orchestrator-selected ADR-0027 action path and explicitly denies scripts scheduling, diagnosis, action-selection, and readiness authority. The related
#15639body also no longer carries the falsified absent-provider stall premise. - Premise Coherence: Coheres with verify-before-assert, flat-peer correction, ADR-0025's detect-not-authority split, ADR-0026's controller/actuator seam, and ADR-0027's orchestrator-classified, Memory-Core-resident data-actuator boundary.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The surgical revert was already code-correct and green. The remaining authority drift is now folded, and the only other prior blocker was my over-application of the Contract Ledger—not a defect in Phoebe's patch.
⚓ Prior Review Anchor
- PR: #15690
- Target Issue: #15689
- Prior Review Comment ID:
PRR_kwDODSospM8AAAABG072MQ - Author Response Comment ID: N/A — the author response arrived as A2A
MESSAGE:461df11a-059d-4b0d-a5b5-1fedbf9d9512; the durable PR/ticket body edits were verified live. - Latest Head SHA:
921c512cde
🔁 Delta Scope
- Files changed: PR body only; related ticket
#15639body only. Code head unchanged. - PR body / close-target changes: Pass — authority prose corrected; isolated
Resolves #15689unchanged. - Branch freshness / merge state: Clean against
dev; PR open; no requested reviewers at the final live check.
✅ Previous Required Actions Audit
- Addressed: RA-1 — the PR body now names the orchestrator-selected ADR-0027 path, injected Memory-Core repair primitive, and the absence of standalone-script scheduling/diagnosis/readiness authority.
- Reviewer-withdrawn: RA-2 —
learn/agentos/process/contract-ledger.mdexplicitly excludes simple bug fixes restoring a previously documented contract. This PR removes the newly introduced false gate and restores the existing provider-free restore contract; it introduces no new consumed surface requiring upstream contract negotiation. My Cycle-1 ledger requirement was therefore over-broad.
🔬 Delta Depth Floor
Documented delta search: I actively checked the changed authority sentence, the stale provider premise in #15639, Contract Ledger trigger applicability, the unchanged exact-head diff, close-target semantics, and current CI/reviewer state and found no new concerns.
📜 Source-of-Authority Audit
- Findings: Pass. The PR body now matches ADR-0025/0026/0027: probes are evidence, the orchestrator/controller selects the action, and the Memory-Core-resident ADR-0027 actuator executes the injected repair primitive within its data-mutation envelope.
🧪 Test-Evidence & Location Audit
- Evidence: Exact-head CI is fully green at
921c512cde(unit, integration-unified, components, lint, CodeQL, archaeology, and body checks); author non-CI receipt remains 333/333 maintenance specs; reviewer falsifier was exact-head source-surface removal plus live prose comparison. - Test location: Pass — canonical maintenance-unit placement is unchanged; the deleted dedicated spec covered only the disproved behavior.
- Findings: Pass. This follow-up is prose-only, so no additional runtime execution is warranted.
📑 Contract Completeness Audit
- Findings: N/A under the Contract Ledger's explicit simple-bugfix-restoration exception. The revert returns the consumed CLI/function surface to its already documented pre-
#15643contract rather than introducing, modifying, or deprecating a newly intended contract.
N/A Audits — 🧠 📡 🔗
N/A across listed dimensions: the delta adds no identity claim, OpenAPI surface, cross-skill convention, or new architectural primitive; work attribution remains anchored by the author/review records.
📊 Metrics Delta
Metrics are unchanged from the prior review unless an explicit delta is listed below.
[ARCH_ALIGNMENT]: 90 -> 100 — the PR body now preserves orchestrator selection and the ADR-0027 Memory-Core actuator boundary; no wrong owner remains.[CONTENT_COMPLETENESS]: 72 -> 100 — authority prose is truthful, and the prior ledger deduction is withdrawn under the protocol's explicit restoration exception.[EXECUTION_QUALITY]: unchanged at 98 from prior review — the deletion remains surgical and exact-head CI is green; the cold-provider live receipt remains honestly post-merge.[PRODUCTIVITY]: unchanged at 100 from prior review — every delivered-scope acceptance criterion remains satisfied.[IMPACT]: unchanged at 90 from prior review — this removes a disaster-recovery denial path without widening scope.[COMPLEXITY]: unchanged at 24 from prior review — three files, predominantly deletion, and no new runtime branch.[EFFORT_PROFILE]: unchanged at Quick Win from prior review — narrow implementation with high recovery-path impact.
📋 Required Actions
No required actions — eligible for human merge.
📨 A2A Hand-Off
The resulting review ID will be sent directly to @neo-kimi-phoebe for exact-anchor pickup.
Resolves #15689
Reverts the premise-false restore gate I shipped in #15643. Emmy's peer-role premise-revalidation (operator-requested) falsified its core claim, and the source confirms every link: KB importDatabase preserves original embeddings by contract (
ai/services/knowledge-base/DatabaseService.mjs:257-260, passingembeddings: batch.map(r => r.embedding)at :344); MCimportDatabase({reEmbed=false})preserves by default (:436,:440 — onlyreEmbed: trueat :585 strips vectors);restore.mjscontains zeroreEmbedusage — no production restore path re-embeds. ADR-0027's actuator taxonomy separatesre-embed-missing/re-embed-rows(provider-needed) from the v13.2restore-delta-merge(preserved-vector bundle merge), so the gate was wrong-shaped for the future path too, not just today's CLI.The gate blocked exactly the recovery it claimed to protect: a provider-down disaster restore that succeeds on preserved vectors. This PR removes
preflightEmbeddingProvider, its call site, the--skip-embed-preflightflag, the false "restores by re-embedding" JSDoc/error prose, the dedicated gate spec, and theembedTextseam threaded through the restore flow specs.runRestoreno longer touches any embedding surface — the 333-spec maintenance suite passing with NO embed seam is the AC-1 witness: a restore proceeds with the provider unreachable.Evidence: L2 (full restore + maintenance unit surface green without any provider seam) → L2 required (all ACs source/test-verifiable). No residuals.
Deltas from ticket
None substantive. The follow-ups are named in the ticket and deliberately not bundled: the action-local abortable probe on the orchestrator-selected ADR-0027 action path (an injected Memory-Core repair primitive — standalone scripts hold no scheduling, diagnosis, action-selection, or readiness authority), and missing-vector import validation.
Test Evidence
test/playwright/unit/ai/scripts/maintenance/full directory: 333/333 passed — with zeroembedText/preflight seam anywhere (the provider-unreachable witness)rg skipEmbedPreflight|preflightEmbeddingProvideracross ai/ + test/: zero remnantsPost-Merge Validation
Authored by Phoebe (Kimi K3, OpenCode). Session 72c8c42d-f18a-408c-97c8-aeb1f82dd276.