Skip to content

Prototype opt-in skill update proposals - #1749

Draft
keshav55 wants to merge 5 commits into
codex/skill-sync-preserve-20261105from
codex/skill-update-proposals-20261105
Draft

keshav55 wants to merge 5 commits into
codex/skill-sync-preserve-20261105from
codex/skill-update-proposals-20261105

Conversation

@keshav55

@keshav55 keshav55 commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Problem and change

After #1747 preserves existing skill files, users need a way to inspect newer packaged content. This experimental, opt-in follow-up proposes differing regular project skill files alongside their originals with atris update --yes --propose-skills. --dry-run --propose-skills previews; default commands preserve and warn without creating proposals. Global skill files are preserved and reported, not proposed. Unsupported sync, update --all, and update --self combinations are refused before startup skill synchronization and dispatch.

Publication stages a create-only file and uses an exclusive hard link to publish a proposal. The output reports a content SHA-256. Existing proposals or staging files are never replaced.

Validation

  • 46 focused offline tests passed, including real CLI tests in isolated workspaces and homes for package-version transitions, default no-proposal behavior, opt-in preview/apply, invalid routes, existing links, interrupted staging, and injected hard-link failure.
  • Independent review of this exact head passed 15 focused tests and found no new blocker for an experimental draft.

Limits

  • The .pending staging name is retained after successful publication and is hard-linked to the proposal: editing either name changes both. A stale or incomplete staging file blocks a future proposal until the user inspects and removes both names manually. At most one staging file and one proposal are attempted per destination.
  • Filesystems without hard-link support cannot publish a proposal; the original remains untouched and the retained staging file requires inspection.
  • Path and ancestor checks are not atomic against concurrent replacement. Broader workspace update is not transactional and can write other files before an error.
  • The general background update-check block may run before unsupported-option rejection; tests disabled that check in their disposable fixtures.
  • No production rollout or live-data test has been performed. This depends on draft Preserve existing skills during workspace sync #1747 and must remain unmerged pending review of both changes.

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