Skip to content

feat(pi): let pi packages track their latest release - #87

Merged
worldofgeese merged 1 commit into
mainfrom
agent/sagewolf/test_01m6bqkn3n1epndy-pi-packages-latest
Nov 1, 2026
Merged

worldofgeese merged 1 commit into
mainfrom
agent/sagewolf/test_01m6bqkn3n1epndy-pi-packages-latest

Conversation

@worldofgeese

Copy link
Copy Markdown
Owner

What

The user's decision (2026-11-01): pi packages track their latest release.

  • modules/pi.nix accepts npm:name next to npm:name@version.
    • An entry without a version tracks the latest release: each switch runs pi update for it, because pi does not update packages on its own.
    • An entry with a version stays pinned.
    • The name drops a trailing @version only when that version has no /, so npm:@scope/name stays unpinned.
    • Moving an entry between the two forms removes the old entry and installs the new one through pi, as before.
  • ponytail, context-mode and pi-beads-extension are unpinned (modules/M-02877/token-toolchain.nix, modules/M-02877/agent-integrations.nix).
  • chorus-pi stays at chorusVersion. The Chorus client, chorus-pi and the team server move together. I proposed this to the user, and they didn't object.

INTERFACES, ARCHITECTURE and OPERATIONS describe the new rule. With this change, the billion-context follow-up (bead home-manager-hfq) only needs npm:billion-context once a release includes ranxianglei/billion-context#4898.

Proof

  • The activation loop ran against a sample settings.json with every kind of entry:

    Entry in settings.json Action
    npm:@dietrichgebert/ponytail@5.3.3 pi remove it, then pi install npm:@dietrichgebert/ponytail
    npm:context-mode@1.0.169 pi remove it, then pi install npm:context-mode
    chorus-pi @0.23.0 left alone
    npm:pi-beads-extension pi update
    npm:billion-context (declared, not yet installed) pi install
    {source: ...} object entry pi update
  • nix eval of piAgent.packages and a build of the M-02877 Home Manager generation both pass. The generated activate script (bash 5.3) contains the new loop.

  • Pre-commit just check passed.

  • CI-local decapod validate --refresh-specs passed (171 pass, 0 fail), and the drift check is clean.

  • Full local decapod validate is still blocked by the three older done TODOs (bead home-manager-350), as in feat(M-02877): send pi through Caveman's compat mount and Headroom #84. The user confirmed that PRs may proceed on the CI-local proof.

Deploy

Run just deploy-darwin. The first switch replaces the three pinned entries with unpinned ones. After that, each switch runs pi update for them. If an update fails (for example, no network), activation warns and continues, and the next switch retries.

The user's decision: pi packages track their latest release, not a pin.

- modules/pi.nix accepts `npm:name` next to `npm:name@version`. An entry
  without a version tracks the latest release: each switch runs
  `pi update` for it, because pi does not update packages on its own.
  The package name drops a trailing @Version only when that version has
  no slash, so `npm:@scope/name` stays unpinned. Moving an entry between
  forms removes the old entry and installs the new one through pi, as
  before.
- ponytail, context-mode and pi-beads-extension are unpinned.
- chorus-pi stays at chorusVersion. The Chorus client, chorus-pi and the
  team server move together.

INTERFACES, ARCHITECTURE and OPERATIONS describe the new rule. The
billion-context follow-up (bead home-manager-hfq) now only needs the
unpinned entry once a release includes billion-context#4898.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T14:47:58.544944Z 828c7fd PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@worldofgeese
worldofgeese merged commit ab98938 into main Nov 1, 2026
2 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.

2 participants