Skip to content

feat: qualify kimi native project E2E - #524

Merged
777genius merged 50 commits into
feat/project-native-e2e-remaining-20261025from
feat/project-native-kimi-20261025
Oct 28, 2026
Merged

777genius merged 50 commits into
feat/project-native-e2e-remaining-20261025from
feat/project-native-kimi-20261025

Conversation

@777genius

@777genius 777genius commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Active continuation checkpoint — 2026-10-28, 00:30 UTC

Published source is eb69a291aefe0ada8bfc9099e5553a00274e3344, tree bf2455bbec3ad97d6c057f9b2d6d667cd1390eb5. Run 40605865958 is complete and successful: admission, component lifecycle, single-tool completion and inherited Cline all passed. This current result supersedes the historical pending/failed single-call status below.

The installed component job 122545677125 completed in 41.612s. Two independent complete raw audits verify 67 native/25 frontend members, 24 frontend + 14 service-stream + 126 HTTP joins, 22 public commands including the expected unchanged/repeated-removal outcomes, seven fresh services and eleven fresh probe process/session pairs. Original user/A/B/C isolation, untrusted C behavior, update to 1.0.1, exact-pin repair, fresh restart, removal, retained data and foreign entries agree. Exactly four component flags are true; tools-call remains false in this lane.

The installed single-tool job 122545677225 completed in 7.993s. Two independent full raw audits verify 26 native/25 frontend members, one manual approval, the exact completed native turn/history, two provider requests, one correlated initialize/list/call probe sequence, native/provider/probe facts and retained marker/data proof. Native service and provider close ordinarily with no SIGTERM/forced kill. Exactly the three MCP flags are true in this lane; lifecycle/restart remain in the separate component lane.

Together these two actual same-head lanes establish all five intended capabilities. Vendor authentication and real-model operation remain false. Inherited Cline job 122545677296 also passed and its complete raw cycle/all five flags were independently audited.

The final code 5d8229b had two independent exact CODE GOs; publication adds documentation only. Frozen local gates passed: 38 top-level Go tests/166 cases without skips, 97 Python contracts, affected all-enabled and whole six-linter gates, historical whole-reader replays and bidirectional independent fixture parity. Original component/collector/profile/source/process/deadline contracts remain unchanged. Earlier disk-link failure and failed 9e single-call evidence are retained, not promoted. This leaf is now merged into program #520 as 888ef9f5d0f19ef305374bf87b1dd4133e21d578 after48 successful checks; only the nonblocking CodeRabbit check was skipped. Both leaf and program heads were verified before merge, and the resulting tree exactly equals the tested eb69 tree. The program remains draft and main is unchanged; no release is included.

Preserved source-bound implementation and evidence history

Latest continuation: reviewed repair and native-capture corrections (2026-10-27)

Published 9e9779f2352101e8002070ac64ac30d24e2f9be5 by normal fast-forward. Two independent reviewers approved each exact plan before code, the final source and the composed tree; all reviewed file bytes are preserved.

The genuine b2bb component capture exposed an intact-repair defect: the managed selection reader used Kimi's user-format file for a project artifact. The additive scoped policy now reads project mcp.json while preserving the user layout and unscoped API. Explicit scope/target/digest authority, both artifact verifications, profile checks, legacy optional ports and damaged-artifact repair gates remain intact. Actual public CLI and public Engine regression tests reproduce the old removal/byte drift and pass with the correction.

The genuine single-tool capture also preserved a request containing prompt_cache_key, which the old provider rejected before issuing its tool call. Pinned source establishes the session metadata mapping. The provider now admits only the optional canonical 44-byte key and requires identical presence/value on the second turn. Auth, route, tool/schema, owned call/result facts, counts and manual approval remain required. The unchanged original 7,839-byte request failed through the old actual parser/provider and reaches only the expected first response in the corrected inert replay. This is not a new native execution claim.

The separate finite poll-refusal diagnostic preserves original polling, quarantine, cleanup and qualification behavior. It cannot authorize a tool or turn failure into success.

Executed gates include final SDK intact repair PASS, composed Go contracts PASS, 57 Kimi Python and 27 runtime contracts PASS, affected whole-file and unfiltered architecture lint with zero issues. Original 23-member failed evidence re-admits byte-for-byte with the same failed/all-false summary. Retained saved-Git cases encountered unavailable ordinary containment in this executor; that failure is recorded and the guard is unchanged. Genuine hosted CI retains that coverage.

Committed composed validation, exact reviews and evidence limits.

Fresh genuine component and single-tool captures are pending. Historical failures remain failed; no complete native lifecycle, authentication, real-model, main-merge, release or VS Code completion claim is made.


Fresh component and single-tool results — 2026-10-27

Current published head: b2bb2b7f85b5461420f932478b197905e6fc5ad9, tree b12354b2565a05d14037556f8493b149d7d36ea2. Both lanes below belong to runtime run 40569825577.

The component job 122438517506 now passes repeated add and unchanged update. Intact repair exits 0 but then fails the unchanged native-byte stability assertion after 21.40 seconds. Its actual public plan keeps the same installed package/source/physical identity yet changes the selected MCP component from native to unsupported (not_in_recorded_delivery) and emits managed_component_removal_planned. Exact source tracing identifies an unscoped selection mismatch: the reader chooses the user .kimi-plugin/plugin.json layout, while project delivery records selection in root mcp.json. Post-repair skill/MCP bytes are not exported, so the observed removal plan is distinguished from the combined byte assertion. A narrowly scoped correction is being implemented after two independent pre-code reviews; it is not yet part of this published head.

The separate single-tool job 122438517585 also failed. Actual probe events record initialize and tools/list, with one provider request, then the collector reports a closed validation failure at approvals. No tools/call event is present. Private native streams remain quarantined; the offending approval facts are not exported. Cleanup reports the group reaped and port closed, no forced kill, but SIGTERM sent and no shutdown acknowledgment. This is not ordinary successful native completion or an approval grammar that can be inferred from the failure.

Independent source-bound audits verify component native/frontend 12767504412/12767812666 (40/25 members) and single-tool 12768461663/12768386913 (23/25 members), exact clean source/tree/build and all 24 frontend stream joins per lane. Component nested service and HTTP joins also pass. Both failed envelopes remain unchanged under their exact source readers. All five qualification, authentication and real-model flags remain false. The component repair correction and single-tool approval boundary remain separate outstanding gates; this PR remains a draft.

Earlier source-bound implementation and evidence

Problem and scope

Project-scoped Kimi installation from a local source could reach the adapter without a required client version. The native lifecycle also needed independent source-to-installed identity checks and correct reuse of the original profile. This PR is stacked on #520; no release is included.

Current source and implemented changes

Published source: 91a3c54ac74002c0bf67977d3107230f9bbbca30.
Exact tree: 17957bb4494ad7139a1e5e6fe8a26bbd27f418ce.

Latest reviewed correction and measured refusal

The preceding runtime 40466885261 at 1c0dcd1e closed both component and single-tool jobs with the same finite root/mode refusal: an ordinary root with matching UID/GID had mode 0755. Neither observer nor service entered. The two native and two frontend archives were reverified for exact source/tree/clean closure, ordinary closed ZIPs and all 48 frontend command-stream joins. Their qualifications remain false.

Only Kimi's freshly created fixture root is now authored as 0700 before external baselines. The helper checks canonical ancestors, no aliases, actual ownership, exact initial modes, held-directory identity, checked close and final identity. It changes only the held descriptor; an already-private root skips chmod. The existing Python privacy policy is unchanged, including a real-filesystem test that later drift to 0755 still refuses.

Root/desktop plan GOs and desktop/CLI code GOs cover the exact published correction. Focused Go contracts passed in 0.176 seconds, all 57 Python contracts passed in 16.484 seconds, and both affected all-enabled and unfiltered whole-file lint reported zero issues. These checks validate the correction; fresh genuine component and single-tool results must establish what follows context entry.

The actual context entrypoint now uses one shared adapter to snapshot exactly the twelve held environment keys. Both real collectors call that tested adapter, fixing the single-tool entrypoint's undefined os reference. The exact original root/HOME/environment comparison, no-follow descriptor traversal, private owner/group/mode checks, held/linked identity recheck and all-descriptor cleanup remain mandatory. A context refusal can additionally report only a finite role/reason and already-held directory metadata; wrapped OS failures retain the os category. Malformed diagnostics remain suppressed and the original failure is preserved. No profile, environment value, error text or credential is exported.

This slice was published after two independent plan and code approvals. Nine focused profile controls passed, the full 56-test supervisor set passed in 16.650 seconds, and root independently reran 44 Kimi tests successfully in 3.962 seconds. AST and whitespace checks passed. Fresh hosted runtime evidence is required before any lifecycle or MCP qualification.

Selected project mutation resolves a missing native version through adapter-declared requirements and targeted detector capabilities, validating the complete result and preserving original executable/profile identity. Direct and saved add/update/repair use this preflight. Read-only commands, user scope, dry runs, unchanged reconciliation, generic Skills previews and unselected clients retain their prior behavior.

The fixtures bind Kimi startup to the original profile/cache, suppress automatic updates, freeze authored source and package closure, and independently reconstruct exact binding, projection, launcher, installed ownership and retained-data authority. The first validated installation authority survives source revisions. Generic CLI/detector code retains adapter boundaries without client-ID dispatch.

The preceding correction forwards only the three genuinely observed hosted-runner markers to the private single-tool Python observer. Its closed environment is copied without importing ambient credentials, proxies or loader settings. Preexisting or malformed marker values are refused. Both the outer Go host check and independent Python platform/host guard remain mandatory; no local hosted eligibility is synthesized. Other children and the component collector retain their existing host-admission rules.

The latest correction reuses the original held profile for installed observations instead of calling the fresh-profile provisioner again. It validates exactly twelve inherited profile/environment values and the existing home, temporary and XDG directories through anchored no-follow directory handles, then supplies only the fixed required process defaults. It never creates or truncates profile files, resolves an alias into acceptance, or imports ambient credentials, proxies or loader settings. Original Go and Python ownership, digest, source, host, service and cleanup checks remain unchanged.

The latest identity correction copies the complete immutable map and excludes exactly the two held supervisory Python/Git executable roles from the native observer's current-user identity set, matching the existing component lane. Both remain protected by the full original Go immutable closure. Native clients, compiler/scanner/probe/source identities, same-basename files, protected files and trees remain present. Missing, empty or aliased supervisory roles fail; no broad owner-UID exception or mutable map alias is introduced.

Actual hosted evidence and unresolved work

Runtime 40456546065 is bound to preceding source 55f5d848fb61899f2c84bd7cccc7592549718b5f, tree 2f20a8e83fe52710eda7ead5494e7821e873ddce.

Its single-tool job 122031436268 failed at Python host admission before entering the observer or creating a native service. The closed parent environment had omitted the three required markers; this PR now repairs that exact handoff. Native artifact 12712668290 SHA256 is 38ceaded9a2b4b9bb28dcfbf6b77bb637012921eef8ea2b7761f6d9e572ec406; frontend 12712892996 is 3fdc6fc1e63494f32ae666aa7fb933fd094c816f58facee84bbe0e33bba9bd67.

The separate component job 122031436251 passed its empty observation, then failed at context setup for the installed observation with a recorded OS exception, before observer/service entry. Native artifact 12713940918 SHA256 is 5a59f0a45ca0139e9cd3ad26e8840adbc9aee4b2e160f3bf863e9c0510ffbef4; frontend 12714100073 is 2d7907fd2d633c5fbf8207f90b378a1329da9ac548205e52c558f91ef64af859. That distinct context-reuse defect is addressed separately by the latest existing-profile correction. The repeated-provisioning cause follows from the retained source and inert repeat-observation controls; the raw capture itself reports only the bounded context/OS failure.

Preceding-source runtime 40461197005 at b7235fb3 completed with both native jobs failed. Call job 122047731730 records context/other before observer entry; retained source independently exposes a missing os import in its newly exercised environment snapshot callsite. Component job 122047731757 records context/validation; its precise failing context condition remains uncaptured. These are separate follow-ups, not reasons to relax identity, directory mode or ownership checks. Native artifacts 12714519282 (21 members) and 12715247415 (16 members), with frontends 12714469374 and 12715366882 (25 each), were checked for exact source/tree/clean closure and all 24 command-stream joins per frontend. All qualification flags remain false.

Earlier-source runtime 40464184810 was triggered for 499a6947; the more recent source-bound root/mode refusal is documented above. Research 40464184790 completed successfully; this read-only job does not supply installed runtime or lifecycle qualification.

Source/tree, ordinary canonical archive closure, CRCs and stream hashes were checked. Missing service/cleanup evidence remains explicitly unreported. No failed attempt supplies a positive qualification flag.

Independent review and verification

The exact identity-role projection received independent root and desktop plan/code approvals. Its focused contracts passed in 0.013 seconds; affected all-enabled and unfiltered whole-file size/complexity/architecture lint each reported zero issues. The reviewed local and published Git trees match exactly, and the branch moved with a fresh expected head and no force.

Each product/runtime amendment received two independent plan reviews and independent implementation review. The preceding exact two-file marker handoff received root and CLI plan/code GOs. Focused new pure environment controls plus existing single-tool and closed-environment contracts passed in 0.012 seconds. Actual all-enabled affected lint and unfiltered whole-file size/complexity/architecture lint both reported zero issues; formatting and whitespace checks pass. No vendor process or hosted eligibility guard ran locally.

The latest four-file existing-profile correction received independent root and desktop plan and final code GOs. All 54 focused Python controls passed in 16.459 seconds, including repeated existing-profile entry, exact environment/metadata checks, descriptor closure, and alias refusal without path resolution. AST, formatting and whitespace checks pass. This slice changes no Go code and runs no local vendor process.

Earlier exact-source integration/proof tests, 47 Python observer/admission tests, installed framing corrections, six external Go fixes, shared adapter architecture, parent Darwin cleanup and the two current parent CI concurrency corrections remain preserved. Their prior results retain their own source identities.

Merge gate

Fresh source-bound component and separate single-tool runs, the complete user/A/B lifecycle, restart/removal/repeated removal, and independent native grammar review remain required. All unproved lifecycle/MCP, vendor-authentication and real-model flags stay false. The earlier component run 40352260675 records the original version failure. A research success or a local parser test does not qualify native execution. Applicable current-source checks and evidence are mandatory before merge.

Summary by CodeRabbit

  • Improvements
    • Project installs, updates, and repairs now perform targeted version checks for selected clients when a version is needed, without probing unrelated clients.
    • If a version check fails or returns an invalid result, the operation stops without changing project or user settings.
    • Read-only, dry-run, unchanged, and removal operations avoid unnecessary version checks.

Integrates independently reviewed client leaf 7f368088eb57da962959741112095b05182fa4b1. Native runtime qualification remains separate.
@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9169a582-2967-4627-8080-18960bcd5723

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 775e1c7e-562e-4edd-bd8d-7dd62fb9ee30
Commits

Reviewing files that changed from the base of the PR and between b16b5c5 and a4a211d.

Files selected for processing: 39
  • cli/cmd/agentplugins/devin_project_version_test.go
  • cli/cmd/agentplugins/project_kimi_version_fixture_test.go
  • cli/cmd/agentplugins/project_kimi_version_lifecycle_test.go
  • cli/internal/agentpluginscli/add.go
  • cli/internal/agentpluginscli/deps_sync.go
  • cli/internal/agentpluginscli/prepare.go
  • cli/internal/agentpluginscli/project_version_preflight.go
  • cli/internal/agentpluginscli/project_version_preflight_test.go
  • cli/internal/agentpluginscli/project_version_windsurf_test.go
  • cli/internal/agentpluginscli/repair_multi.go
  • cli/internal/agentpluginscli/update_multi.go
  • docs/plans/project-install-e2e/remaining-native-qualification.md
  • install/integrationctl/agentplugins/adapters/clientdetect/detector.go
  • install/integrationctl/agentplugins/adapters/clientdetect/detector_test.go
  • install/integrationctl/agentplugins/adapters/clientdetect/devin_version_environment_test.go
  • install/integrationctl/agentplugins/clients/all/project_version_test.go
  • install/integrationctl/agentplugins/clients/detection.go
  • install/integrationctl/agentplugins/clients/kimi/scope.go
  • install/integrationctl/agentplugins/clients/kimi/version_profile.go
  • install/integrationctl/agentplugins/clients/kimi/version_profile_test.go
  • install/integrationctl/agentplugins/clients/kimi/version_requirement_test.go
  • install/integrationctl/agentplugins/clients/windsurf/project_validation.go
  • install/integrationctl/agentplugins/clients/windsurf/version_profile.go
  • install/integrationctl/agentplugins/clients/windsurf/version_profile_test.go
  • install/integrationctl/agentplugins/providers/project_kimi_admission_test.go
  • repotests/agentplugins_kimi_project_native_attempt_contract_test.go
  • repotests/agentplugins_kimi_project_native_attempt_test.go
  • repotests/agentplugins_kimi_project_native_contract_test.go
  • repotests/agentplugins_kimi_project_native_lifecycle_test.go
  • repotests/agentplugins_kimi_project_native_payload_test.go
  • repotests/agentplugins_kimi_project_native_proof_contract_test.go
  • repotests/agentplugins_kimi_project_native_proof_test.go
  • repotests/agentplugins_kimi_project_native_provider_test.go
  • repotests/agentplugins_project_native_framing_contract_test.go
  • repotests/agentplugins_project_native_runtime_test.go
  • scripts/project_native_collectors/kimi.py
  • scripts/project_native_collectors/kimi_attempt.py
  • scripts/test_project_native_kimi.py
  • scripts/test_project_native_kimi_attempt.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The changes add targeted project-version discovery for selected Kimi and Devin clients. They also add Kimi native observation, lifecycle, installation-proof, and bounded runtime-attempt tooling, with associated tests and qualification-plan updates.

Changes: Project version discovery

Layer / File(s) Summary
Version requirements and probe environments
install/integrationctl/agentplugins/clients/detection.go, install/integrationctl/agentplugins/clients/kimi/*, install/integrationctl/agentplugins/clients/windsurf/*, install/integrationctl/agentplugins/adapters/clientdetect/*
Optional adapter interfaces identify clients that need a project version and can provide a host-specific probe environment. Kimi and Windsurf implement version requirements. The detector uses the matching environment provider. Kimi accepts versions 2.3.1 and 2.3.2.
Lifecycle and dependency preflight
cli/internal/agentpluginscli/*
Project lifecycle entry points now use project-version preflight. It validates targets and requests targeted probes for eligible install, update, and repair actions. It skips read-only, dry-run, unchanged, removal, user-scope, known-version, and unselected targets.
Preflight and adapter tests
cli/internal/agentpluginscli/project_version_*_test.go, install/integrationctl/agentplugins/clients/*/*version*_test.go, install/integrationctl/agentplugins/adapters/clientdetect/devin_version_environment_test.go, install/integrationctl/agentplugins/providers/project_kimi_admission_test.go
Tests cover selected-only probing, validation of probe results, unchanged discovery identity, adapter eligibility, safe probe environments, and Kimi version admission.
Project lifecycle regression tests and plan
cli/cmd/agentplugins/*version*test.go, cli/cmd/agentplugins/project_kimi_version_*_test.go, docs/plans/project-install-e2e/remaining-native-qualification.md
Kimi and Devin lifecycle tests check direct and saved installs, probe counts, update and repair behavior, and preservation of project and user state. The plan records the selected-client preflight and environment contracts.

Kimi native observation and lifecycle

Layer / File(s) Summary
Native collector and installed-state observation
scripts/project_native_collectors/kimi.py, scripts/test_project_native_kimi.py, repotests/agentplugins_kimi_project_native_contract_test.go
The collector checks pinned Kimi probes, protected fixtures, API responses, workspaces, trust, catalogs, and probe events. Its installed-state entry point validates receipt-selected files and emits bounded evidence. Tests cover collector and observation contracts.
Lifecycle execution and installation proof
repotests/agentplugins_kimi_project_native_lifecycle_test.go, repotests/agentplugins_kimi_project_native_payload_test.go, repotests/agentplugins_kimi_project_native_proof*.go, docs/plans/project-install-e2e/remaining-native-qualification.md
Opt-in lifecycle coverage exercises installation, update, repair, restart, and removal. Proof helpers validate authored sources, bindings, installed files, receipts, and native ownership before establishing a baseline. The plan defines evidence and qualification boundaries.
Bounded single-tool attempt
scripts/project_native_collectors/kimi_attempt.py, scripts/test_project_native_kimi_attempt.py, repotests/agentplugins_kimi_project_native_attempt*.go
The attempt collector validates installed state, responses, approval, and history. It bounds and redacts evidence, and permits a staged schema-refusal capture only after configuration checks and shutdown. Tests validate request and provider exchanges, cleanup, and artifact admission.

Native package framing and runtime contracts

Layer / File(s) Summary
Staging, digest, and runtime validation
repotests/agentplugins_project_native_framing_contract_test.go, repotests/agentplugins_project_native_runtime_test.go
Tests check staged package receipts against captured trees and reject unsafe paths and digest changes. Runtime helpers validate file identity, bounded JSON, probe schemas, and installed-package digests.

Priority: Normal

Estimated code review effort: 5 (Critical) | ~120 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant RuntimeAttemptTest
  participant KimiAttemptCollector
  participant KimiService
  participant ScriptedProvider
  RuntimeAttemptTest->>KimiAttemptCollector: submit bounded attempt request
  KimiAttemptCollector->>KimiService: validate installed state and observe workspaces
  KimiService-->>KimiAttemptCollector: return session and approval observations
  KimiAttemptCollector->>ScriptedProvider: send completion request
  ScriptedProvider-->>KimiService: return tool call and sentinel response
  KimiService-->>KimiAttemptCollector: return bounded session evidence
  KimiAttemptCollector-->>RuntimeAttemptTest: emit redacted capture
Loading
Merge Risk: Minimal · previous review a4a21

The change adds selected-client project version discovery and bounded Kimi native qualification tooling, and keeps read-only commands, dry runs and unselected clients probe-free. No concrete merge-blocking defect was found. Fresh hosted results for this head remain required before merge, as the PR itself states.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Description check Warning The description is substantive and technically detailed. It states the change context, a published source and tree, CI run results, lane outcomes, qualification flags, and merge gates. It does not fol… Restructure the description to match the template. Add a '## Summary' section with a short 'what changed' list (selected-project version preflight for Kimi and Windsurf/Devin, targeted probing, original-profile environment binding, and new …
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly identifies the Kimi native project E2E qualification work and matches the main purpose of the changes.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is substantive and technically detailed. It states the change context, a published source and tree, CI run results, lane outcomes, qualification flags, and merge gates. It does not follow the repository template. It has no '## Summary' section with a what-changed and why-changed split, no Verification checklist with the go test, make lint, make vet, make generated-check, or focused-tests items marked, and no Release Impact checklist. Much of the text is an evidence log for hosted CI runs, with multiple checkpoints and superseded status blocks. The description also does not clearly state the user-facing behavior change, which is selected-project Kimi and Windsurf/Devin version probing in add, update, and repair. The PR objectives describe that change, but the description does not state it.

Resolution

Restructure the description to match the template. Add a '## Summary' section with a short 'what changed' list (selected-project version preflight for Kimi and Windsurf/Devin, targeted probing, original-profile environment binding, and new adapter interfaces) and a 'why it changed' statement. Add a '## Verification' section that lists the tests and lint gates actually run, with checkboxes for go test ./..., make lint, make vet, make generated-check, and focused tests. State which of these were not run, such as hosted-only native lanes. Add a '## Release Impact' section that states whether there is a public contract change (new adapter interfaces and CLI-visible Kimi version gating), whether docs were updated, and whether release-sensitive paths were reviewed. Move the long CI run log and checkpoint history to a linked doc or trim it to the current status.

Finishing Touches: 💡 2
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the version trail
And guards each file from wind and hail
Kimi’s paths are traced with care
Safe small proofs are gathered there
Then home I hop, with carrots in my pail

Comment @coderabbitai help to get the list of available commands.

…tive call evidence

Resolve local-source add/update/repair version discovery through the selected Kimi probe only. Preserve read-only, dry-run, user and unselected behavior. Bind supported startup to the selected profile/cache and disable automatic update attempts.

Add the independently reviewed installed single-tool first capture, retaining only finite schema-refusal evidence after normal authenticated shutdown and unchanged cleanup gates. Keep all native qualification flags false until genuine hosted evidence is reviewed.

Align the leaf with the current program frontend and exact runtime selection.
Freeze authored source/package expectations before installation; require exact installed payload, native objects, projections, and original installation authority before admitting observer identities. Cover real selected Stager/activation and corruption before the first baseline.

Align shared selected-version dispatch with reviewed adapter interfaces and original-host validation, retain strict architecture guards, and include reviewed installed framing and Darwin cleanup fixes.

Two independent plan/code reviews and exact integration review passed. Native qualification remains gated on genuine hosted results.
Integrate only the two existing parent b16b5c5 workflow concurrency changes. This exact disjoint union was independently reviewed; all Kimi product, fixture, source/evidence and host requirements remain unchanged. The current Kimi workflow is confirmed pending behind an obsolete legacy-group lease. Future runs use the current parent groups; this does not cancel old jobs or claim to fix runner allocation.

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

Owner explicitly requested an independent review before any merge. Review the current diff against parent PR #520; current observed head is a4a211d60595abbb8592e76e27846ba6c349a6d0 (including the context-aware test correction). This is a review request only: do not enable autofix, mutate the branch, mark the PR ready, merge, or publish a release.

Focus on correctness and regressions, source/receipt/ownership isolation, original-user authority, fail-closed native evidence admission, and the Kimi component/single-tool lifecycle. Preserve all hosted-only, pin, process, timeout, cleanup and artifact-redaction guards. Distinguish Prepared/component support from native qualification. Current-source native runtime run 40452608070 has failed; unit/research success must not be treated as full native E2E. Please anchor findings to the reviewed commit and identify any missing source-bound evidence.

@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@777genius 777genius left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent follow-through: I confirmed the exact preceding single-tool host-admission failure and reviewed the now-published 705fa429 correction. The existing Go constructor verifies actual Linux/amd64, hosted markers and ordinary UID/GID; only the Python observer receives exact values read from that verified parent. The Python guard remains intact and vendor environment construction remains separate. The pure helper rejects missing/wrong/preexisting markers, clones the closed base and introduces no ambient credentials. GO for this narrow handoff correction; no native qualification or complete-PR merge approval is inferred.

I independently downloaded the two native artifacts from source 55f5d848 in run 40456546065, checked outer SHA256, unique bounded ordinary members and CRCs:

  • Single tool artifact 12712668290: 38ceaded9a2b4b9bb28dcfbf6b77bb637012921eef8ea2b7761f6d9e572ec406, records stage=host-admission, observer_entered=false, service_recorded=false. The raw job 122031436268 proves genuine hosted Azure Ubuntu24/20261012.334.1 and exact source. This matches the now-corrected Go call that previously supplied only f.env().
  • Component artifact 12713940918: 5a59f0a45ca0139e9cd3ad26e8840adbc9aee4b2e160f3bf863e9c0510ffbef4, source/tree55f5/2f20a8. Empty native A/B/C workspace/trust observation passed (19 API requests), then public user/A/B/C adds passed. The next observe-installed fails at context, exception_kind=os, before observer/service entry. This is a DIFFERENT boundary, not missing hosted markers: the component Go observer already forwards those three actual values.

Concrete source cause for the next narrow amendment: _installed_main calls shared.legacy.runtime_environment(home, root/'tmp') on every fresh observation. That delegates to run-native-client-matrix.py::profile_environment, which calls plain path.mkdir() for home/config, cache, state, data and npm-cache, and writes fresh config files. The first empty observation creates those paths; the second observation reuses the same original Home and inevitably encounters an existing directory before starting the service. The finite context/os capture is consistent with this deterministic source collision; the artifact deliberately does not disclose the actual exception text/path.

Do not fix this with a new HOME, recursive deletion, unverified exist_ok, rewriting an existing profile baseline, or relaxed ownership/host guards. A separate reviewed amendment should separate one-time profile preparation from read-only reuse of the exact held original profile/environment, verify ordinary owned canonical paths and preserved config bytes, and test first initialization, repeated context construction, and symlink/foreign/exchanged/profile-file refusal inertly. Keep the original budgets, native argv, private-token quarantine, cleanup and qualification gates. No code/ref, native execution, rerun or flags were changed by this review.

@777genius 777genius left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review of b7235fb: NO-GO for current installed-context compatibility until the Go/Python fixture-root mode contract is aligned. The read-only profile reuse design avoids the previous duplicate-provisioning bug and preserves the closed environment, but the new helper assumes a property the actual producer does not establish.

_installed_profile_directories in scripts/project_native_collectors/kimi.py marks the fixture root private and requires its mode exactly0700. Both native Kimi constructors call newNativeFixture(t,false), whose root is the unmodified t.TempDir() leaf. Exact hosted toolchain source golang/go@go1.26.10/src/testing/testing.go, blob34b45b41b9addfee91d11f1e54266cdfc1827e11, makeTempDir lines1480–1484 creates that numbered leaf with os.Mkdir(dir,0o777), subject to umask. Its private parent is created with MkdirTemp, but the returned /001 leaf is not guaranteed0700. The inert Python positive fixture uses tempfile.TemporaryDirectory (0700), so it misses this producer mismatch.

I independently ran a minimal Go testing.TempDir mode contract under explicit umask022 in a separate local directory/cache: actual leaf mode0755, PASS0.003s for reproducing the mismatch. That local run used Go1.23.2; the exact Go1.26.10 source independently confirms the same creation mode. No vendor process or hosted-environment spoofing was involved.

New genuine source-bound single-tool run40461197005/job122047731730 already fails before observer/service entry at context, exception_kind=other, rather than the old host-admission boundary. Native artifact12714519282 was independently downloaded/rehashed to56b68ce6733b06ea5ee7eeb53999102fcba67c15b206ad54e6faedacc6582c82; 21 unique bounded ordinary ZIP members and CRCs inspected. Actual native-attempt Python exit1, no deadline/capture error, no stdout. The artifact deliberately does not expose directory mode or exception text, so I do NOT claim it directly measured0755; the source-backed mode collision is a concrete reproducible blocker consistent with this boundary. The component job is still in progress; no result is inferred.

Fix through a separately reviewed narrow producer/consumer contract: establish the required private root from the actual newly created Go fixture before any vendor observation/held authority, with ordinary inode/ownership checks and non-mutating reuse thereafter. Do not relax the Python private-directory guard, change HOME, accept arbitrary modes, chmod an unverified pre-existing profile, or adopt a new observed baseline. Add an inert integration contract using actual Go fixture construction (including a non-0077 umask) plus repeated read-only Python-context construction and exchanged/symlink/mode negatives; do not rely solely on an independently authored Python0700 directory. Keep all pins, host checks, original budgets, cleanup, credentials quarantine and qualification flags unchanged. No competing code/ref/CI/qualification mutation was made here.

@777genius 777genius left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional independent source review of production scoped-selection correction f09fbb1 as composed in current 9e9779f: GO for this narrow repair correction, not full native qualification or complete-PR merge approval.

I traced the actual current call chain preflightTargetComponents -> recordedManagedMCPNames -> profileStager.ManagedMCPNamesForScope -> readManagedSelection -> Stager.ManagedMCPNamesForScope -> Kimi.ManagedMCPSelectionForScope, and compared it with the preceding unscoped reader. Explicit scope comes from the selected plan, must agree with the retained binding and any nonempty input scope, and reaches target resolution plus the adapter without filesystem inference. The exact prior locator/digest and original profile guard remain required; full artifact verification still occurs before policy/read and again after the read. Unknown scope and scoped-policy errors fail without retrying a user layout. Existing absent/damaged-artifact repair handling and exact rebuilt-digest boundary are preserved.

The old unscoped API still selects the user .kimi-plugin/plugin.json layout, including its existing optional MCP member. Explicit project selection uses root mcp.json. Adapters without the optional scoped policy preserve their previous selection policy. The wrapper retains legacy optional-port behavior and does not accidentally erase the new method. No authentication, version, installation ownership or runtime readiness authority is derived from these names.

I inspected the current provider/usecase tests for mixed user/project documents, malformed selected document with a valid alternative, invalid/conflicting scope, exact target mismatch, guard-before-inner invocation, no fallback after scoped error, pre/post artifact mutation, symlink/hardlink refusal, and legacy/absent readers. The public CLI/SDK regression changes explicitly require retained native MCP selection and selected installation/package/binding/physical/data/native-object identities, plus unrelated user/B preservation. Their tree snapshots prove membership/bytes, not inode/mode identity; the validation document correctly states that limit. The integrationctl module declares Go1.25.0, so its use of t.Context() is not a Go1.22 regression; the separate root repotest compatibility correction must retain its own floor.

This is an independent static review, not a claim that I executed the author's Go/lint suite or accessed the root's local review receipts. I did not alter root checkouts, branch refs, qualification flags or CI. The committed validation records the two original pre-code plan and code reviews. Fresh actual hosted component lifecycle and the separate MCP single-tool/approval evidence are still required; the unrelated provider metadata and finite poll-diagnostic amendments are not requalified by this scoped-selection review.

@777genius
777genius marked this pull request as ready for review October 28, 2026 00:32
@777genius
777genius merged commit 888ef9f into feat/project-native-e2e-remaining-20261025 Oct 28, 2026
49 checks passed
@777genius
777genius deleted the feat/project-native-kimi-20261025 branch October 28, 2026 00:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants