Releases: uHappyLogic/cairn
Releases · uHappyLogic/cairn
Release list
1.1.0
Agent Layer Improvements (milestone 18)
- Removed every pinned
model: opusfrom the plugin — the three agents and the two skills that carried it — so dispatched agents and skills now inherit the session's model instead of forcing Opus. - Recolored the three agents
red(complete-task),yellow(answer-open-question-with-recommendation), andblue(recommend-open-question) so no two share a color and all three stay distinguishable on a grayscale display. - Hardened
/recommend-all-open-questions: therecommend-open-questionagent now returnsFAILED: <reason>on failure, and the sweep shape-checks every return before embedding, skipping a failed or malformed one (block left untouched, skipped questions reported) instead of splicing prose intorequirements.mdas XML. - Orchestrators now address their agents by namespaced registry name (
cairn:complete-task,cairn:recommend-open-question,cairn:answer-open-question-with-recommendation), and the recommend sweep passes the milestone directory to its agent so it grounds itself in that milestone'srequirements.mddirectly. - Made a failed or interrupted
complete-taskrun resumable: partial work is left uncommitted in the tree and the next run continues from it rather than promising an untouched tree it could never guarantee. - The two file-editing agents now stage their own change set path-scoped and return a bare
DONE/FAILED: <reason>;/complete-all-tasksand/answer-all-open-questions-with-recommendationcommit that staged index, keeping one commit per task or answer. - Answer recording now folds the decision into
## Decisionsbefore removing the<open-question>block, so an interruption between the two edits can no longer silently lose a question. - The Antigravity build now rewrites every
${CLAUDE_PLUGIN_ROOT}/shared/<name>.mdreference to.agents/plugins/cairn/shared/<name>.md, so the generated tree's shared-procedure references resolve under Antigravity instead of pointing nowhere.
Full Changelog: 1.0.1...1.1.0
1.0.1
Versioning And Release Tooling (milestone 17)
- Added
scripts/set_version.py, a one-argumentMAJOR.MINOR.PATCHscript that writes every in-repo version literal —.claude-plugin/plugin.json,.claude-plugin/marketplace.json,pyproject.toml, anduv.lock— in a single all-or-nothing pass, never touching git,gh, or the generated tree. - Taught
scripts/migrate_skills_to_agy.pyto read the source manifest's version at generation time and copy it into the generated.agents/plugins/cairn/plugin.json, so the Antigravity manifest carries a version on every regeneration path while.claude-plugin/plugin.jsonstays the single source of truth. - Added a maintainer-only
/release-plugin <MAJOR.MINOR.PATCH>skill as the sole documented home of the release procedure, gated behind four hard pre-flight stops (clean tracked tree, HEAD onmain,mainnot behindorigin/main, no untracked sources) and three pre-mutation version refusals (malformed literal, an existing tag, a version not strictly greater than the last release). - Made the skill compose its own release notes from the
Milestone-finish:commits since the last release, cross-checked against the### Milestoneheadings added tomilestones/README.mdover the same range, stopping on a mismatch in either direction and falling back to commit-derived notes — on explicit confirmation only — when no milestone was finished. - Standardised a release on the bare
MAJOR.MINOR.PATCHtag and exactly one path-scopedRelease: <VERSION>commit, followed by a single pre-publish pause and check-then-do branch push, tag push, andghrelease creation, so a re-run with the same version resumes from the first incomplete step instead of duplicating work.
Full Changelog: 0.9.9...1.0.1
0.9.9
Frontmatter description diet (milestone 16)
- Cut all 24 plugin frontmatter descriptions (21
skills/*/SKILL.md, 3agents/*.md) to a single independent clause of 25 words or fewer naming only what that skill or agent does — the always-on description budget drops from 1,411 words to 452 (−68%), and the longest single description from 149 words to 23. - Restructured the six heaviest descriptions from scratch and shortened the nine mid-weight ones, deleting their trigger-phrase lists, mechanics, commit subjects, sequencing, cross-skill references, "Use when…" framing, and design provenance outright — a description is a routing label, never a record, so nothing cut was relocated.
- Compressed the three agent descriptions into that same shape while keeping each invocation contract as a short clause naming what the prompt carries (the task's heading text, the question's Short Title).
- Enforced two machine-checkable bars across the set: no semicolon or colon in any description, and every raw frontmatter loads under
yaml.safe_loadwith itsdescription:line left unquoted — so the transpiler's re-quoting fallback survives as an unexercised net. - Extended
CLAUDE.md's Skill Frontmatter invariant into the single home of every rule governing the frontmatterdescriptionkey. - Regenerated the checked-in Antigravity tree at
.agents/plugins/cairn/, with each of the 24 generated files byte-identical to its source.
Runtime layer de-duplication (milestone 15)
- De-duplicated the whole 32-file runtime layer (
skills/*/SKILL.md,agents/*.md,shared/*.md) across eleven per-file sweeps, removing 7,597 words (32,758 → 25,161, −23.2%) under the rule that a sentence may be cut only where its content survives earlier in the same file, in a referenced shared procedure, or in aCLAUDE.mdinvariant. - Retired the
## Rulesheading across the layer (−3,221 words), relocating each surviving rule into the step it constrains or into the file's opening description paragraph. - Moved editor-facing rationale out of the runtime files into the
CLAUDE.mdinvariants (−2,772 words) and trimmed cross-file narration of counterparts to the one sentence each contract needs (−1,303 words). - Consolidated the
CLAUDE.mdinvariants section in a single post-sweep pass, merging ten overlapping bullets (35 bullets → 25). - Ran seven fresh-context whole-layer re-audits with fix tasks between them; the runtime layer returned zero lost constraints for the last five passes and zero residual restatements for the last three.
- Extended
scripts/migrate_skills_to_agy.pyto copyshared/into the generated Antigravity tree, so every${CLAUDE_PLUGIN_ROOT}/shared/<name>.mdreference resolves to a file that is present.
Full Changelog: 0.9.8...0.9.9
0.9.8
Brief-level task pipeline (milestone 14)
- Flattened the task pipeline to a single brief-level altitude: every entry in
TASKS_TODO.mdis a##title plus a 1–3 sentence description and a trailing---, with noProvides/Notes/Successsections, whichever path authored it. - Replaced
shared/submit-procedure.mdwithshared/task-format.md, holding only the brief-level template and its four authoring guidelines — referenced by both authoring runners (derive-tasksand thesubmit-taskskill) and parsed byshared/complete-procedure.md. - Made
derive-tasksthe single writer on the derivation path: it writes its ordered briefs intoTASKS_TODO.mditself, retiring the per-brief dispatch loop and deleting thesubmit-taskagent — leavingcomplete-taskas the plugin's only remaining skill+agent pair. - Leaned down the
submit-taskskill to author the same brief-level format inline and own the position-anchored insertion itself, keeping its triage, position decision, andTask-submission:commit unchanged. - Reworked
shared/complete-procedure.mdto be self-sufficient at brief altitude: it derives each task's acceptance bar from the description plusrequirements.md, resolves cross-task references by reading prior tasks' live deliverables, and records the derived bar in theTASKS_DONE.mdentry as a**Verified:**bullet list. - Reconciled
CLAUDE.mdandREADME.mdwith the flattened design and regenerated the checked-in Antigravity plugin tree under.agents/plugins/cairn/.
Full Changelog: v0.9.7...0.9.8
v0.9.7
v.0.9.6
Milestone-finish: milestone_11_terse-skill-reporting