Skip to content

feat(compat): complete notify beta handoff - #443

Merged
solomonneas merged 3 commits into
mainfrom
feat/notify-docs-compat
Jul 22, 2026
Merged

feat(compat): complete notify beta handoff#443
solomonneas merged 3 commits into
mainfrom
feat/notify-docs-compat

Conversation

@solomonneas

@solomonneas solomonneas commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • reuse the last verified stable component manifest for beta installs when agent-notify is known on main but unpublished
  • keep stable manifests strict, reject unknown component records, and tolerate only the explicitly unpublished agent-notify record
  • require Agent Pantry 0.5.0 or newer before Brigade calls its doctor, status, or inventory surfaces
  • sanitize malformed Pantry version output and document the stable and beta channel behavior

Verification

  • Brigade receipt: 20260722-191816-work-verify-8af881
  • 3,858 passed, 3 skipped
  • coverage: 82.66%

Phase 5 and the stable release pin are intentionally excluded.

Refs #431

Summary by CodeRabbit

  • New Features
    • Beta updates can reuse compatible-stable component manifests, including during offline setup.
    • Added an Agent Pantry version compatibility probe that gates doctor/status/expiry-alert behavior.
  • Bug Fixes
    • Improved manifest-cache handling: online stable repairs missing/corrupt verified cache entries; offline stable and beta remain fail-closed.
    • Compatibility manifest loading tolerates only the intended unpublished component; unknown IDs now fail immediately when compatibility is enabled.
    • “Unhealthy” station health now reports as failed in status output.
  • Documentation
    • Updated release/manifest validation options to support compatible-stable behavior where applicable.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 22, 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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: escoffier-labs/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 63266daa-ebf2-4798-adba-1913a85160c3

📥 Commits

Reviewing files that changed from the base of the PR and between aff3aad and b45a08e.

📒 Files selected for processing (2)
  • src/brigade/pantry_cmd.py
  • tests/test_pantry_cmd.py
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/brigade/pantry_cmd.py
  • tests/test_pantry_cmd.py

📝 Walkthrough

Walkthrough

This PR adds compatibility-aware stable manifest reuse for beta handoffs and offline setup, including pre-agent-notify manifests. It also adds Agent Pantry version probing, strict version parsing, sanitized diagnostics, command gating, and unhealthy-status failure handling.

Changes

Manifest compatibility and beta handoff

Layer / File(s) Summary
Compatible manifest validation
src/brigade/component_manifest.py, tests/test_component_manifest.py
Manifest loading can allow missing unpublished components while rejecting missing published or unknown components.
Beta release-manifest validation
src/brigade/update_cmd.py, tests/test_update_cmd.py
Beta release validation forwards compatibility mode and covers stable manifests predating agent-notify.
Cached setup and beta handoff
src/brigade/component_install.py, tests/component_install_helpers.py, tests/test_component_install.py
Setup reuses verified beta stable caches, repairs invalid online stable caches, and keeps offline or beta failures closed according to channel state.

Agent Pantry compatibility probing

Layer / File(s) Summary
Version probe contract and implementation
src/brigade/pantry_compat.py, tests/test_pantry_compat.py
A bounded parser and timeout-limited probe validates Agent Pantry versions against minimum 0.5.0 and sanitizes invalid values.
Command compatibility gating
src/brigade/managed.py, src/brigade/pantry_cmd.py, src/brigade/status.py, tests/test_status.py
Doctor, status, and expiry-alert flows probe Agent Pantry before downstream commands; incompatible and unhealthy results become structured failures.
Command behavior coverage
tests/test_managed.py, tests/test_pantry_cmd.py
Tests cover probe ordering, malformed and unsupported versions, sanitization, exit statuses, and suppressed downstream calls.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant pantry_cmd
  participant pantry_compat
  participant agentpantry
  pantry_cmd->>pantry_compat: probe_agentpantry_version()
  pantry_compat->>agentpantry: version --json
  agentpantry-->>pantry_compat: version result
  pantry_compat-->>pantry_cmd: compatible or incompatible VersionProbe
  pantry_cmd->>agentpantry: status, doctor, or inventory when compatible
Loading

Possibly related PRs

Suggested labels: coderabbit-review

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.13% 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and clearly matches the PR’s main compatibility and beta handoff 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.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/notify-docs-compat

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

@solomonneas

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@solomonneas

Copy link
Copy Markdown
Collaborator Author

@greptileai review

@coderabbitai

coderabbitai Bot commented Jul 22, 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.

@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown

Greptile Summary

This PR completes the beta handoff for notification support. The main changes are:

  • Reuses verified stable component manifests for beta installs.
  • Repairs missing or corrupt stable manifest caches during online setup.
  • Keeps stable manifest validation strict while allowing the unpublished notification component on beta.
  • Adds an Agent Pantry version check before doctor, status, and inventory calls.
  • Reports incompatible Pantry installations as failed health.

Confidence Score: 5/5

This looks safe to merge.

  • Incompatible Pantry health now reaches aggregate status as failed.
  • Online stable setup repairs missing, unreadable, digest-mismatched, and invalid manifest caches.
  • Offline stable and beta cache failures remain closed.
  • No blocking issues were found in the updated fix paths.

Important Files Changed

Filename Overview
src/brigade/component_install.py Adds beta stable-manifest reuse and online repair for invalid stable cache entries.
src/brigade/component_manifest.py Adds narrow validation rules for stable manifests reused by beta installations.
src/brigade/pantry_compat.py Adds bounded parsing and compatibility checks for the external Agent Pantry version.
src/brigade/status.py Maps known Pantry incompatibility to failed aggregate health.

Reviews (6): Last reviewed commit: "docs(pantry): clarify doctor exit status" | Re-trigger Greptile

Comment thread src/brigade/pantry_cmd.py
@solomonneas solomonneas self-assigned this Jul 22, 2026
@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown

Greptile Summary

This PR completes the beta manifest handoff and adds Agent Pantry compatibility checks. The main changes are:

  • Reuse of the last verified stable component manifest for beta setup.
  • Strict handling for published, unpublished, and unknown component records.
  • A sanitized Agent Pantry version probe with a minimum supported version.
  • Updated channel, manifest, Pantry, and notification documentation.

Confidence Score: 4/5

The online stable setup repair path needs a fix before merging.

  • Matching stable state now triggers cache validation before online release resolution.
  • A missing or damaged cache stops setup instead of allowing an exact release download to repair it.
  • The beta compatibility and Pantry parsing paths otherwise preserve their documented checks.

src/brigade/component_install.py

Important Files Changed

Filename Overview
src/brigade/component_install.py Adds beta cache reuse, but online stable setup can no longer repair a missing or corrupt manifest cache.
src/brigade/component_manifest.py Adds compatibility validation for explicitly unpublished components while preserving strict checks for published and unknown records.
src/brigade/update_cmd.py Enables beta updates to validate the last stable manifest under the compatibility policy.
src/brigade/pantry_compat.py Adds bounded and sanitized parsing for the Agent Pantry version probe.
src/brigade/pantry_cmd.py Gates Pantry status, doctor, and inventory flows on the supported version floor.
src/brigade/managed.py Adds an advisory Pantry version check to workspace doctor.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Online brigade setup] --> B[Load update state]
    B --> C[Validate cached manifest]
    C -->|Valid beta cache| D[Reuse stable manifest]
    C -->|Valid stable cache| E[Install components]
    C -->|Missing or corrupt stable cache| F[Setup fails]
    B -->|No reusable cache| G[Resolve exact release]
    G --> H[Download and validate manifest]
    H --> E
Loading

Reviews (2): Last reviewed commit: "feat(compat): complete notify beta hando..." | Re-trigger Greptile

Comment thread src/brigade/component_install.py

@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 `@src/brigade/pantry_cmd.py`:
- Around line 205-206: Update the doctor epilogue’s user-facing exit-status note
near the command logic to include unhealthy and incomplete outcomes alongside
agentpantry fail_count. Keep the existing exit behavior in the health check
unchanged, and ensure the note accurately describes every condition that returns
status 1.
🪄 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: Repository: escoffier-labs/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 59104418-3ffd-4d9a-b1aa-e5701be2f66d

📥 Commits

Reviewing files that changed from the base of the PR and between e524e80 and d4687ab.

⛔ Files ignored due to path filters (6)
  • CHANGELOG.md is excluded by !**/CHANGELOG*
  • README.md is excluded by !**/README*
  • docs/component-manifest-policy.md is excluded by !docs/**, !**/docs/**
  • docs/overview.md is excluded by !docs/**, !**/docs/**
  • docs/technical-guide.md is excluded by !docs/**, !**/docs/**
  • docs/update-channels.md is excluded by !docs/**, !**/docs/**
📒 Files selected for processing (12)
  • src/brigade/component_install.py
  • src/brigade/component_manifest.py
  • src/brigade/managed.py
  • src/brigade/pantry_cmd.py
  • src/brigade/pantry_compat.py
  • src/brigade/update_cmd.py
  • tests/test_component_install.py
  • tests/test_component_manifest.py
  • tests/test_managed.py
  • tests/test_pantry_cmd.py
  • tests/test_pantry_compat.py
  • tests/test_update_cmd.py

Comment thread src/brigade/pantry_cmd.py
Co-authored-by: Cursor <cursoragent@cursor.com>
@solomonneas

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@solomonneas

Copy link
Copy Markdown
Collaborator Author

@greptileai review

@coderabbitai

coderabbitai Bot commented Jul 22, 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.

@solomonneas

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@solomonneas

Copy link
Copy Markdown
Collaborator Author

@greptileai review

@coderabbitai

coderabbitai Bot commented Jul 22, 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.

@solomonneas
solomonneas merged commit e097aef into main Jul 22, 2026
29 checks passed
@solomonneas
solomonneas deleted the feat/notify-docs-compat branch July 26, 2026 20:38
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