Skip to content

feat(cli): harden native installer distribution - #197

Merged
Keesan12 merged 11 commits into
mainfrom
feat/native-installer-hardening
Jul 29, 2026
Merged

feat(cli): harden native installer distribution#197
Keesan12 merged 11 commits into
mainfrom
feat/native-installer-hardening

Conversation

@Keesan12

Copy link
Copy Markdown
Owner

Summary

This PR promotes the validated native installer implementation from the internal-first staging lane at exact source SHA 132048260af20f2837630685585ce105115cadd8.

It adds supported native installation paths for:

  • Linux and macOS through install.sh
  • Windows x64 through install.ps1
  • Existing npm CLI users through martin install, with optional version and install-directory selection
  • Host-native GitHub Release assets for Linux x64/arm64, macOS x64/arm64, and Windows x64, each with a required SHA-256 checksum

Safety and recovery

  • Downloads and checksums must both exist and match before the active executable is touched.
  • The downloaded executable is validated before replacement.
  • Upgrades use staged, atomic replacement and preserve the previous executable.
  • Failed post-install verification restores the previous executable.
  • MCP host configuration installs retain ledger-backed verify-install, rollback, and uninstall commands.
  • Existing installs remain intact on missing assets, network failures, checksum mismatches, or executable-validation failures.

Validation

  • Installer-focused tests: 8 passed
  • CLI: lint passed; build passed; 274 tests passed, 2 skipped
  • Native release-contract tests: 3 passed
  • PowerShell parser: clean
  • bash -n install.sh: clean
  • Packed martin-loop@0.4.5 artifact: installed and smoke-tested successfully
  • REUSE: 1,821/1,821 files compliant
  • Public copy scan, portability guard, and Git-surface guard: passed
  • Public contamination scan: no internal paths, private repository names, secrets, planning files, or duplicate installer sources found

No npm publish, tag, GitHub Release, or merge was performed as part of this promotion. This PR is intentionally separate from #196.

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 174 files, which is 74 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a60a6c87-ca65-4ccf-986c-ff35dfcaa915

📥 Commits

Reviewing files that changed from the base of the PR and between 2928d9d and 1a340ff.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (174)
  • .github/workflows/public-surface-guard.yml
  • .github/workflows/release.yml
  • LICENSES/Apache-2.0.txt
  • NOTICE
  • README.md
  • REUSE.toml
  • distribution/release-truth.json
  • docs/getting-started/mcp.md
  • docs/oss/MCP-FOR-AI-AGENTS.md
  • docs/reference/cli.md
  • install.ps1
  • install.sh
  • package.json
  • packages/adapters/src/claude-cli.ts
  • packages/adapters/src/cli-bridge.ts
  • packages/adapters/src/codex-launcher.ts
  • packages/adapters/src/direct-provider.ts
  • packages/adapters/src/index.ts
  • packages/adapters/src/openai-compatible.ts
  • packages/adapters/src/runtime-support.ts
  • packages/adapters/src/stub-agent-cli.ts
  • packages/adapters/src/stub-direct-provider.ts
  • packages/adapters/src/verifier-only.ts
  • packages/adapters/tests/claude-cli.test.ts
  • packages/adapters/tests/cli-bridge.test.ts
  • packages/adapters/tests/codex-launcher.test.ts
  • packages/adapters/tests/openai-compatible.test.ts
  • packages/adapters/tests/stub-adapters.test.ts
  • packages/adapters/vitest.config.ts
  • packages/cli/README.md
  • packages/cli/src/arcade/index.ts
  • packages/cli/src/arcade/space-invaders.ts
  • packages/cli/src/bin/martin.ts
  • packages/cli/src/commands/install.ts
  • packages/cli/src/feedback.ts
  • packages/cli/src/home-dir.ts
  • packages/cli/src/index.ts
  • packages/cli/src/mcp-config.ts
  • packages/cli/src/mcp-install-state.ts
  • packages/cli/src/persistence.ts
  • packages/cli/src/phase-command-center.ts
  • packages/cli/src/proof-card.ts
  • packages/cli/src/reliability-score.ts
  • packages/cli/src/run-stats.ts
  • packages/cli/src/run-store.ts
  • packages/cli/src/star-prompt.ts
  • packages/cli/src/ux.ts
  • packages/cli/src/workflow-state.ts
  • packages/cli/tests/arcade.test.ts
  • packages/cli/tests/auto-governance.test.ts
  • packages/cli/tests/cli-integration.test.ts
  • packages/cli/tests/cli.test.ts
  • packages/cli/tests/corpus-intelligence.test.ts
  • packages/cli/tests/install.test.ts
  • packages/cli/tests/mcp-config.test.ts
  • packages/cli/tests/model-auto-selection.test.ts
  • packages/cli/tests/operator-commands.test.ts
  • packages/cli/tests/persistence.test.ts
  • packages/cli/tests/phase-command-center.test.ts
  • packages/cli/tests/proof-card.test.ts
  • packages/cli/tests/release-hardening.test.ts
  • packages/cli/tests/reliability-score.test.ts
  • packages/cli/tests/run-history-intelligence.test.ts
  • packages/cli/tests/run-store.test.ts
  • packages/cli/tests/star-feedback.test.ts
  • packages/cli/tests/streaming-budget-inspector.test.ts
  • packages/cli/tests/trajectory-triage.test.ts
  • packages/cli/tests/workflow-state.test.ts
  • packages/cli/vitest.config.ts
  • packages/contracts/src/adapter-capabilities.ts
  • packages/contracts/src/context-graph.ts
  • packages/contracts/src/execution-policy.ts
  • packages/contracts/src/governance.ts
  • packages/contracts/src/identity.ts
  • packages/contracts/src/index.ts
  • packages/contracts/src/observation.ts
  • packages/contracts/src/operator.ts
  • packages/contracts/src/trajectory.ts
  • packages/contracts/src/verification.ts
  • packages/contracts/tests/governance.test.ts
  • packages/contracts/tests/loop-contracts.test.ts
  • packages/contracts/tests/portfolio-snapshot.test.ts
  • packages/contracts/tests/telemetry-envelope.test.ts
  • packages/contracts/vitest.config.ts
  • packages/core/src/compiler.ts
  • packages/core/src/context-graph.ts
  • packages/core/src/context-integrity.ts
  • packages/core/src/grounding.ts
  • packages/core/src/identity.ts
  • packages/core/src/index.ts
  • packages/core/src/leash.ts
  • packages/core/src/persistence/compiler.ts
  • packages/core/src/persistence/index.ts
  • packages/core/src/persistence/integrity.ts
  • packages/core/src/persistence/ledger.ts
  • packages/core/src/persistence/memory-store.ts
  • packages/core/src/persistence/runs-reader.ts
  • packages/core/src/persistence/store.ts
  • packages/core/src/persistence/trace-store.ts
  • packages/core/src/policy-compiler.ts
  • packages/core/src/policy.ts
  • packages/core/src/red-blue/red-phase.ts
  • packages/core/src/red-blue/risk-tiers.ts
  • packages/core/src/repo-analyzer.ts
  • packages/core/src/rollback.ts
  • packages/core/src/routing.ts
  • packages/core/src/test-integrity.ts
  • packages/core/src/trajectory.ts
  • packages/core/tests/context-graph.test.ts
  • packages/core/tests/context-integrity.test.ts
  • packages/core/tests/grounding-cache.test.ts
  • packages/core/tests/grounding.test.ts
  • packages/core/tests/identity.test.ts
  • packages/core/tests/leash.test.ts
  • packages/core/tests/memory-store.test.ts
  • packages/core/tests/persistence.test.ts
  • packages/core/tests/policy-compiler.test.ts
  • packages/core/tests/policy.test.ts
  • packages/core/tests/red-blue.test.ts
  • packages/core/tests/repo-analyzer.test.ts
  • packages/core/tests/routing.test.ts
  • packages/core/tests/runs-reader.test.ts
  • packages/core/tests/runtime.test.ts
  • packages/core/tests/test-integrity.test.ts
  • packages/core/tests/trace-store.test.ts
  • packages/core/tests/trajectory.test.ts
  • packages/core/vitest.config.ts
  • packages/mcp/src/discovery-metadata.ts
  • packages/mcp/src/discovery-support.ts
  • packages/mcp/src/package-version.ts
  • packages/mcp/src/prompts.ts
  • packages/mcp/src/resources.ts
  • packages/mcp/src/server-validation.ts
  • packages/mcp/src/server.ts
  • packages/mcp/src/tools/doctor.ts
  • packages/mcp/src/tools/eval.ts
  • packages/mcp/src/tools/execution-policy.ts
  • packages/mcp/src/tools/get-attempt.ts
  • packages/mcp/src/tools/get-run.ts
  • packages/mcp/src/tools/get-status.ts
  • packages/mcp/src/tools/get-verification-results.ts
  • packages/mcp/src/tools/inspect-loop.ts
  • packages/mcp/src/tools/list-runs.ts
  • packages/mcp/src/tools/logs.ts
  • packages/mcp/src/tools/plan.ts
  • packages/mcp/src/tools/pr-tools.ts
  • packages/mcp/src/tools/preflight.ts
  • packages/mcp/src/tools/run-controls.ts
  • packages/mcp/src/tools/run-dossier.ts
  • packages/mcp/src/tools/run-loop.ts
  • packages/mcp/src/tools/run-store.ts
  • packages/mcp/src/tools/tool-errors.ts
  • packages/mcp/src/tools/tool-response.ts
  • packages/mcp/src/tools/tool-support.ts
  • packages/mcp/src/tools/triage-runs.ts
  • packages/mcp/src/tools/workflow-governance.ts
  • packages/mcp/src/workflow-state.d.ts
  • packages/mcp/src/workflow-state.ts
  • packages/mcp/tests/build-package.test.ts
  • packages/mcp/tests/eval.test.ts
  • packages/mcp/tests/mcp-discovery.test.ts
  • packages/mcp/tests/mcp-tools.test.ts
  • packages/mcp/tests/run-dossier.test.ts
  • packages/mcp/tests/server-entry.test.ts
  • packages/mcp/tests/server-live.test.ts
  • packages/mcp/tests/server-validation.test.ts
  • packages/mcp/tests/trajectory-triage.test.ts
  • packages/mcp/vitest.config.ts
  • scripts/build-native.mjs
  • scripts/oss-boundary.mjs
  • scripts/release-truth-check.mjs
  • scripts/tests/mcp-release-docs.test.mjs
  • scripts/tests/native-release-contract.test.mjs
  • scripts/verify-native-release-assets.mjs

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


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

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

@Keesan12
Keesan12 merged commit 340e304 into main Jul 29, 2026
12 checks passed
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.

1 participant