Phase B: mechanical plugin sync (structure source-of-truth + coherence check + version discipline) - #10
Merged
Merged
Conversation
Leaves behind machinery so the plugin cannot silently drift from its own source again, on two axes. Plugin<->repo (prevent recurrence): - nexus.structure.json: single machine-readable source of structural truth (paths, PARA folders, frontmatter, command set, optional drift vocabulary), narrated by a thin STRUCTURE.md. Nothing imports it; the check makes deviation fail. - scripts/check_plugin_coherence.py: zero-dependency stdlib check asserting every consumer agrees with the structure file (no stale .nexus state paths, one failure-log path everywhere, command set matches the JSON and README, drift vocabulary consistent where it appears, category-free seed log; advisory PARA-folder scan). Wired as a pre-commit hook and a GitHub Action. Plugin<->user (keep installs current): - CHANGELOG.md (Keep-a-Changelog) with the 0.6.0 reconciliation and this 0.7.0 entry; CONTRIBUTING rule that every command/hook/structure change bumps the version and adds an entry. Version 0.6.0 -> 0.7.0. - session_preflight.py prints the installed plugin version, read offline from the manifest (no network). - docs/updating.md: CLI vs desktop update routes; linked from README. - STRUCTURE.md documents the two-layer sync trade-off (discipline in the paste layer, enforcement in the plugin). Category decision (resolved): drift categories are an optional, emergent vocabulary, never imposed on a day-one log. Seed template is now category-free so /nexus-init and the setup prompt agree; the seven codes remain only as an opt-in reference in the skill, CLAUDE-lite, and /failure. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Greenfield terminal path from empty terminal to a running Nexus in ~10 minutes. Folded into this branch because it appeared in the working tree alongside the Phase B README edits; it is additive onboarding, not part of the sync machinery. KB-root consistent (root failure-log.md, declared commands, no .nexus state paths) — coherence check stays green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fast-follow to Phase A (#9). Leaves behind machinery so the plugin cannot silently drift from its own source again, on two axes. Not launch-blocking.
Axis A — plugin ↔ repo (prevent recurrence)
nexus.structure.json— single machine-readable source of structural truth (failure-log path, session-state dir, universe path, PARA folders, frontmatter fields, command set, optional drift vocabulary). Nothing imports it; it is canonical because the check makes deviation fail. Narrated by a thinSTRUCTURE.md.scripts/check_plugin_coherence.py— zero-dependency stdlib check (13 assertions) against the verified consumer allowlist: no stale.nexusstate paths anywhere, one failure-log path across all consumers, command set matches the JSON + README, drift vocabulary consistent where it appears, the seed log stays category-free; advisory PARA-folder scan on the scaffolders. Exits non-zero with a precise diff..pre-commit-config.yaml) and a GitHub Action (.github/workflows/coherence.yml)./nexus-initand the setup-prompt are documented as two thin emitters of the one structure, kept honest by the check;/field-reportstays the human drift backstop.Axis B — plugin ↔ users (keep installs current)
CHANGELOG.md(Keep-a-Changelog): 0.6.0 reconciliation + this 0.7.0 entry.CONTRIBUTING.mdrule: every command/hook/structure change bumps the version and adds a changelog entry. Version 0.6.0 → 0.7.0.session_preflight.pyprints the installed plugin version, read from the manifest. No network call.docs/updating.md: CLI (/plugin marketplace update+ reinstall) vs desktop Customize panel (remove + re-add when greyed);/pluginis CLI-only;nexus:namespacing. Linked from README.STRUCTURE.mddocuments the two-layer trade-off: discipline in the paste layer (never stale on the user), enforcement automation in the plugin (accepted update cost).Category decision (resolved)
Drift categories are an optional, emergent vocabulary, never imposed on a day-one log. The seed template is now category-free, so
/nexus-initand the setup-prompt agree; the seven codes remain only as an opt-in reference in the failure-logging skill, CLAUDE-lite, and/failure. The check asserts the vocabulary is consistent where it appears, not that any log is categorised.Verification
.nexus/) → check fails with a precise file:line diff. Reverted.Also folded in
GETTING-STARTED.md+ a README pointer — a greenfield terminal onboarding doc that landed in the working tree alongside the Phase B README edits. Additive onboarding, not part of the sync machinery; separate commit (c96b76e). KB-root consistent; check stays green.🤖 Generated with Claude Code