Skip to content

feat: ship verified self-update and artifact alignment - #165

Merged
Microck merged 28 commits into
mainfrom
feat/t4b-self-update
Aug 1, 2026
Merged

feat: ship verified self-update and artifact alignment#165
Microck merged 28 commits into
mainfrom
feat/t4b-self-update

Conversation

@Microck

@Microck Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Train

  • T4 distribution base
  • Source packet: 25
  • Assigned facts: 36
  • Dependency head: e1daf5de4be23cd839ca8ee42e849030e060aeed
  • Exact head: 75cfbebda60deff3b7ffe5f82cbcbc74c63d3f9f
  • Source packet range: 8789e20aec433237b70376e92c868de26f250b01^..75cfbebda60deff3b7ffe5f82cbcbc74c63d3f9f
  • Plain diff SHA-256: 2b31bd1f09eb20c9448179877e5aecc80040c4177d6645135980e8aa689c6f21

What this ships

  • verified local self-update for installer-owned and direct-archive binaries
  • fail-closed package-manager ownership detection with manager-native upgrade guidance
  • release checksum, attestation, receipt, locking, recovery, and executable replacement contracts
  • the six-target Controller matrix and cross-target Host artifact verification
  • safe stable-release single-Host handoff through the replaced executable and canonical Host update path
  • validated draft release infrastructure without public promotion

Packet boundary

Packet 24 is already delivered on main by original PR #150 at f19ff0cc8d46f28364198887d88cc56c864a481e, so this PR does not manufacture a duplicate packet 24 diff.

GAP-054 records re-exec as minimum support for packet 25 fact L227. Packet 26 still owns explicit multi-Host selectors, combined consent, bounded concurrency, partial failure, and aggregate output. Prerelease self-updates remain local-only because the packet 25 Host update contract accepts stable releases. The internal review suggestion to make --no-input silently imply --yes was rejected because that would bypass the Host update consent contract.

Verification

  • all 36 packet 25 facts are tagged @implemented
  • facts lint --file .facts
  • generated docs contract: 15 files and 51 command examples
  • Codex remediations: diagnostic handoff, command-status contract, prerelease rejection, release-verifier preflight, contextual Host artifact diagnostics, one shared CLI/installer lock protocol, and preserved release version/target failure details, verifier-first latest-release lookup, an exact trusted-publishing npm pin, and suppression of unsupported prerelease Host guidance
  • focused release-verifier, Host artifact, error-contract, transport-mapping, and bounded MCP lifecycle proof
  • strict focused Clippy
  • frozen Yoga candidate gate: 1,766 passed, 2 platform skips
  • strict workspace Clippy
  • one bounded Greptile CLI decision review completed on the frozen source
  • CodeRabbit terminal and non-blocking on the exact head
  • Codex terminal and non-blocking on the exact head
  • Greptile terminal and non-blocking with confidence at least 4/5
  • required CI green

Out of scope

  • packet 26 multi-Host planning, concurrency, consent, partial failure, and summaries
  • packet 28 npm latest promotion and public GitHub release finalization
  • public release publication

Summary by CodeRabbit

  • New Features

    • Added verified self-update support, including optional remote Host updates and noninteractive --yes confirmation.
    • Host updates now support explicit version selection and improved cross-platform handling.
    • Installations through npm package managers preserve installation context during updates.
  • Bug Fixes

    • Improved recovery, locking, rollback, ownership checks, and error guidance for update failures.
    • SSH artifact downloads now require verified signatures, attestations, and checksums.
  • Documentation

    • Updated command status and remote connection documentation to reflect available update features and verification requirements.

Greptile Summary

This PR adds verified local self-update and stable single-Host update handoff.

  • Implements release artifact verification, locking, receipts, recovery, and executable replacement.
  • Aligns Controller and Host artifacts across the six supported release targets.
  • Extends Host update execution, SSH bootstrap verification, npm ownership detection, and draft release validation.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
crates/satelle-cli/src/self-update.rs Implements verified local update planning, artifact validation, replacement, receipts, locking, and recovery.
crates/satelle-cli/src/main.rs Connects self-update and single-Host handoff to CLI validation, consent, output, and re-execution.
crates/satelle-cli/src/ssh-bootstrap.rs Aligns SSH bootstrap downloads with the canonical verified release-artifact contract.
npm/satelle/lib/launcher.cjs Adds package-manager ownership discovery and forwards installation context to self-update.
.github/workflows/release.yml Expands the draft release workflow to build and validate the supported target artifact matrix.
README.md Updates the documented release surface for Host update and self-update availability.

Sequence Diagram

sequenceDiagram
    participant User
    participant CLI as Current satelle
    participant Release as Verified release artifacts
    participant NewCLI as Replaced satelle
    participant Host as Selected remote Host
    User->>CLI: satelle self update
    CLI->>Release: Fetch archive, checksum, and attestation
    Release-->>CLI: Verified version-matched artifact
    CLI->>CLI: Lock, replace executable, and record receipt
    opt Stable single-Host handoff accepted
        CLI->>NewCLI: Re-execute installed binary
        NewCLI->>Host: Plan, confirm, and apply Host update
        Host-->>NewCLI: Updated Host result
    end
Loading

Reviews (13): Last reviewed commit: "fix: suppress unsupported prerelease Hos..." | Re-trigger Greptile

Context used (4)

@Microck

Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@Microck

Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@greptileai review

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Satelle adds verified self-update execution, installation ownership checks, transactional replacement, and remote Host handoff. Host updates preserve explicit versions. npm launchers pass package context. Release validation and publication enforce the six-target platform matrix.

Changes

Self-update contracts and engine

Layer / File(s) Summary
Contracts and error mapping
.facts, Cargo.toml, crates/satelle-cli/Cargo.toml, crates/satelle-cli/src/error-output.rs, crates/satelle-core/src/lib.rs, crates/satelle-transport/src/server/host_error.rs
The self-update contract is marked implemented. New dependency, error codes, exit classifications, recovery text, and Host mappings are added.
Verified self-update engine
crates/satelle-cli/src/self-update.rs, crates/satelle-cli/src/main.rs, crates/satelle-cli/tests/cli.rs
The CLI resolves versions and installation ownership, verifies archives and attestations, supports dry runs and version policies, performs locked replacement with recovery, and supports remote update selection.
Remote Host update integration
crates/satelle-cli/src/transport.rs, crates/satelle-cli/src/ssh-bootstrap.rs, crates/satelle-cli/src/transport-tests.rs, crates/satelle-cli/tests/cli.rs
Host planning, artifact retrieval, application, and post-restart checks use the caller-provided version. SSH bootstrap uses the shared verified artifact flow.

npm installation ownership propagation

Layer / File(s) Summary
npm installation ownership propagation
npm/satelle/lib/launcher.cjs, npm/test/npm-distribution.test.cjs
The launcher detects npm, pnpm, and Bun ownership contexts, validates forwarding candidates, and passes self-update context to the native binary.

Release matrix and publication

Layer / File(s) Summary
Release matrix and publication controls
npm/satelle/platforms.json, npm/scripts/release.cjs, .github/workflows/release.yml, npm/test/release-followup.test.cjs, npm/test/release-infrastructure.test.cjs, .facts
The six-target Controller and native Computer Use Host matrix is validated. Release plans use schema v2. The workflow validates assets, publishes packages with provenance, and keeps the GitHub release as a draft while latest-tag promotion is unavailable.

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

Possibly related PRs

  • Microck/satelle#164: Overlaps across self-update, release workflow, artifact verification, transport, launcher, and platform-matrix changes.
  • Microck/satelle#163: Shares Host update infrastructure and remote artifact verification paths.
  • Microck/satelle#123: Shares release validation and staging infrastructure extended by this change.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.85% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the verified self-update and artifact-alignment changes.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/t4b-self-update

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.

Comment thread crates/satelle-cli/src/main.rs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aae920ce82

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/satelle-cli/src/main.rs Outdated
Comment thread crates/satelle-cli/src/main.rs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (4)
npm/satelle/lib/launcher.cjs (1)

305-331: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Unguarded realpathSync can crash the launcher with a raw stack trace.

Lines 318 and 327 call realpathSync(launcherPath) outside any try. main rethrows anything that is not a LauncherError, so an ENOENT or EPERM here produces an unhandled exception instead of the satelle: <code>: <message> contract. The same value is also computed twice.

Hoist it once and treat failure as "no context", which matches the surrounding fail-closed style.

♻️ Proposed refactor
   if (!packageName || !launcherPath) {
     return undefined;
   }
+  let canonicalLauncherPath;
+  try {
+    canonicalLauncherPath = realpathSync(launcherPath);
+  } catch {
+    return undefined;
+  }
   const candidates = globalOwners.map((owner) => ({
     manager: owner.manager,
     scope: "global",
     package_name: packageName,
     install_root: path.resolve(owner.installRoot),
-    launcher_path: realpathSync(launcherPath),
+    launcher_path: canonicalLauncherPath,
   }));
   const localOwner = discoverLocalOwnership({ packageName, launcherPath });
   if (localOwner) {
     candidates.push({
       manager: localOwner.manager,
       scope: "local",
       package_name: packageName,
       install_root: path.resolve(localOwner.installRoot),
-      launcher_path: realpathSync(launcherPath),
+      launcher_path: canonicalLauncherPath,
     });
   }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@npm/satelle/lib/launcher.cjs` around lines 305 - 331, Update
packageInstallContext to resolve launcherPath once before building candidates,
catch realpathSync failures, and return undefined when resolution fails. Reuse
the resolved path for both global and local candidate objects, preserving the
existing fail-closed behavior.
npm/test/npm-distribution.test.cjs (1)

505-521: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

This test asserts names only, not executability.

The stubbed runCommand bypasses spawnSync, so npm.cmd and pnpm.cmd are never launched. The Windows spawn behavior flagged on launcher.cjs lines 162-184 stays uncovered. Add one test that exercises the real commandLine against a .cmd shim, or gate it to process.platform === "win32".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@npm/test/npm-distribution.test.cjs` around lines 505 - 521, Extend the
Windows global discovery coverage around launcher.discoverGlobalOwnership so it
exercises actual command execution rather than only recording command names:
invoke the real commandLine path with a .cmd shim and verify the Windows spawn
behavior, or condition the test on process.platform === "win32" when using
native execution. Preserve the existing assertions for npm.cmd, pnpm.cmd, and
bun.exe.
npm/test/release-followup.test.cjs (1)

173-177: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Scope the self-hosted runner assertion to the whole workflow.

This assertion inspects buildMatrix only. The lifecycle job declares its own runner matrix, and the attestation policy in npm/scripts/release.cjs passes --deny-self-hosted-runners, so a self-hosted runner reintroduced in the lifecycle matrix would pass this test and then fail late in attest. Assert against workflow instead.

Proposed change
   assert.doesNotMatch(
-    buildMatrix,
+    workflow,
     /runner:.*self-hosted/,
     "pull-request release builds must not run untrusted code on persistent runners",
   );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@npm/test/release-followup.test.cjs` around lines 173 - 177, Update the
self-hosted runner assertion in the release-followup test to inspect the full
workflow object instead of only buildMatrix. Keep the existing doesNotMatch
pattern and failure message, ensuring runner declarations in both build and
lifecycle matrices are covered.
crates/satelle-cli/src/transport.rs (1)

4555-4571: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove the dead digest read in verified_host_update_artifact_from_metadata.

Line 4564, let _verified_digest = metadata.digest();, computes the digest and discards it. digest() is a pure accessor with no side effect, and the local binding is never compared or used. The underscore prefix suppresses the unused-variable lint rather than fixing the dead code.

The name _verified_digest implies a verification step happens here. It does not: the actual digest comparison against the expected value happens later, in ssh_bootstrap::DownloadedArtifact::fetch_with_metadata. Remove this line so the code does not suggest a verification step that does not exist at this location.

Proposed fix
     let metadata =
         metadata.map_err(|error| map_release_artifact_error(host, version, target, error))?;
-    let _verified_digest = metadata.digest();
     Ok(crate::host_update::VerifiedHostArtifact {
         version: version.to_string(),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/satelle-cli/src/transport.rs` around lines 4555 - 4571, Remove the
unused `_verified_digest` assignment from
`verified_host_update_artifact_from_metadata`; retain the metadata error mapping
and `VerifiedHostArtifact` construction unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.facts:
- Around line 308-316: Update the .facts entry describing the public GitHub
release workflow so it only states that the workflow creates or updates a draft
release, attaches release assets and metadata, and validates the release
artifact set. Remove the claim that it publishes the release after validation,
keeping the surrounding publishing facts unchanged.

In `@crates/satelle-cli/src/error-output.rs`:
- Around line 400-404: Separate UnsupportedLocalPlatform and
UnsupportedReleaseTarget from the input-error contract in the error-contract
mapping. Add a dedicated arm using ErrorCategory::InvalidRequest, retryable
false, outcome describing that the platform or release target is outside the
Controller matrix, and default recovery directing the user to select a supported
Controller target; keep their existing exit class unchanged.

In `@npm/satelle/lib/launcher.cjs`:
- Around line 186-199: Update outerNodeModulesRoot to return the innermost
node_modules ancestor that directly contains the relevant package root, rather
than retaining the outermost match. Ensure the install_root passed to native
receipt validation corresponds to the Bun global installation when nested
node_modules trees and parent project roots both exist, including the analogous
logic at the other reported occurrence.
- Around line 485-492: Update executeNativeBinary so it removes every
case-insensitive variant of packageInstallContextEnvironment from the copied
environment before optionally injecting the serialized installContext. Preserve
the existing exact-key behavior and ensure only the intended context variable is
re-added when installContext is provided.
- Around line 162-184: Update commandLine and its callers so Windows .cmd probes
use spawnSync with shell enabled, while non-.cmd commands retain direct
spawning. Keep manager arguments passed as separate, non-interpolated arguments,
and preserve the existing status/error and single-line output handling so
packageManagerCommand-based npm/pnpm ownership detection returns manager-native
guidance.

---

Nitpick comments:
In `@crates/satelle-cli/src/transport.rs`:
- Around line 4555-4571: Remove the unused `_verified_digest` assignment from
`verified_host_update_artifact_from_metadata`; retain the metadata error mapping
and `VerifiedHostArtifact` construction unchanged.

In `@npm/satelle/lib/launcher.cjs`:
- Around line 305-331: Update packageInstallContext to resolve launcherPath once
before building candidates, catch realpathSync failures, and return undefined
when resolution fails. Reuse the resolved path for both global and local
candidate objects, preserving the existing fail-closed behavior.

In `@npm/test/npm-distribution.test.cjs`:
- Around line 505-521: Extend the Windows global discovery coverage around
launcher.discoverGlobalOwnership so it exercises actual command execution rather
than only recording command names: invoke the real commandLine path with a .cmd
shim and verify the Windows spawn behavior, or condition the test on
process.platform === "win32" when using native execution. Preserve the existing
assertions for npm.cmd, pnpm.cmd, and bun.exe.

In `@npm/test/release-followup.test.cjs`:
- Around line 173-177: Update the self-hosted runner assertion in the
release-followup test to inspect the full workflow object instead of only
buildMatrix. Keep the existing doesNotMatch pattern and failure message,
ensuring runner declarations in both build and lifecycle matrices are covered.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ac194434-7739-4ad7-8dff-3783e5506113

📥 Commits

Reviewing files that changed from the base of the PR and between e1daf5d and aae920c.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (19)
  • .facts
  • .github/workflows/release.yml
  • Cargo.toml
  • crates/satelle-cli/Cargo.toml
  • crates/satelle-cli/src/error-output.rs
  • crates/satelle-cli/src/main.rs
  • crates/satelle-cli/src/self-update.rs
  • crates/satelle-cli/src/ssh-bootstrap.rs
  • crates/satelle-cli/src/transport-tests.rs
  • crates/satelle-cli/src/transport.rs
  • crates/satelle-cli/tests/cli.rs
  • crates/satelle-core/src/lib.rs
  • crates/satelle-transport/src/server/host_error.rs
  • npm/satelle/lib/launcher.cjs
  • npm/satelle/platforms.json
  • npm/scripts/release.cjs
  • npm/test/npm-distribution.test.cjs
  • npm/test/release-followup.test.cjs
  • npm/test/release-infrastructure.test.cjs
Comment thread .facts
Comment thread crates/satelle-cli/src/error-output.rs Outdated
Comment thread npm/satelle/lib/launcher.cjs
Comment thread npm/satelle/lib/launcher.cjs Outdated
Comment thread npm/satelle/lib/launcher.cjs
@Microck

Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c02ab5fecf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/satelle-cli/src/main.rs
@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: e1e113d7be

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/satelle-cli/src/ssh-bootstrap.rs`:
- Around line 5284-5290: Update the transport error conversion around the
VerifiedRelease handling in transport.rs so non-unavailable SelfUpdateError
paths construct SatelleError with the original version and target preserved,
rather than using only into_satelle_error(). Keep unavailable handling intact
while adding coverage for required details in both unavailable and
non-unavailable paths, including consistent CLI/MCP machine-readable fields and
schema behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 45cf1a37-fb9a-4e8b-8f95-6881e34d83e9

📥 Commits

Reviewing files that changed from the base of the PR and between 908798c and e1e113d.

📒 Files selected for processing (5)
  • crates/satelle-cli/src/self-update.rs
  • crates/satelle-cli/src/ssh-bootstrap.rs
  • crates/satelle-cli/src/tailscale.rs
  • crates/satelle-cli/src/transport.rs
  • crates/satelle-cli/tests/mcp.rs
🚧 Files skipped from review as they are similar to previous changes (3)
  • crates/satelle-cli/tests/mcp.rs
  • crates/satelle-cli/src/transport.rs
  • crates/satelle-cli/src/self-update.rs
Comment thread crates/satelle-cli/src/ssh-bootstrap.rs
@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai rate limit

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Your plan includes PR reviews subject to rate limits. More reviews will be available in 33 minutes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1fbacad7e4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/release.yml
Comment thread crates/satelle-cli/src/self-update.rs Outdated
@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai rate limit

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Your plan includes PR reviews subject to rate limits. More reviews will be available in 39 minutes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 586d9d126f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/satelle-cli/src/main.rs Outdated
@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@Microck

Microck commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 75cfbebda6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@Microck
Microck merged commit a8af83f into main Aug 1, 2026
31 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant