Repository navigation
chore(skills): bump the bundled community-catalog pin to trinity-skills v0.3.0 (#3123) - #3292
Conversation
|
@vybe: this PR pins fresh 1.0 installs to If you want a newer tag cut before the 1.0 release (2026-10-12), tell me the tag and I'll move it here. For example,
No test edit is needed, because the guard is a floor. |
/review ReportBranch: Upstream pin verification
Plan completion (#3123)
Execution coverage (Step 2.5)
Mutation: on a scratch copy with Tests run locally: Critical Findings (block merge)None. Informational Findings (review required)[I1] Docs: step 4 of the upgrade procedure is hard to follow (Confidence: 7/10) [I2] Supply chain: Clean Categories
Summary
🤖 Generated with Claude Code |
dolho
left a comment
There was a problem hiding this comment.
Approved — /review found no blocking findings; see review comment above.
Summary
trinity-skillsv0.3.0(wasv0.2.0). The tag addsupdate-dashboard, the playbook the metrics tiles and the Dashboard's empty state already point users at (metric_read_service.EMPTY_METRIC_MESSAGE,DashboardPanel.vue). Onv0.2.0a fresh 1.0 install points users at a skill the Library does not have.v0.3.0(annotated tag9119c0d7→ commit7b2aa266).Release-note line (AC4): Bundled community skills catalog now
trinity-skillsv0.3.0for new installs (addsupdate-dashboard, assignable to an agent from the Library). The four removed installers (add-backlog,add-project-management,add-canon,add-orchestrator) remain installable from the abilities marketplace as/agent-dev:<name>. Existing installs keep their current pin; to adoptv0.3.0, an admin first unassigns any of the four removed installers, then updates the bundled source's ref withPUT /api/skills/sources/{id}and runs a full library sync; the steps are indocs/user-docs/automation/skills-and-playbooks.md(supply-chain section).Changes
src/backend/config.py:DEFAULT_SKILL_SOURCE_REFdefaultv0.2.0→v0.3.0; the comment names why (chore(skills): bump the bundled community-catalog pin to trinity-skills v0.3.0 (lockstep with the library release) #3123) and the three files that move together..env.example: the documented example isv0.3.0.docs/user-docs/automation/skills-and-playbooks.md: the pin line saysv0.3.0. It now says that removing and re-adding the source is not an upgrade (a re-added source is always custom: it loses the bundled badge and gets custom-source priority). It also adds the steps to move an existing instance to a newer tag: unassign dropped skills first, find theis_defaultrow,PUTthe ref, run a full sync (only a full sync starts the fleet re-inject), check, roll back.tests/unit/test_2545_skill_source_pin.py:(0, 3, 0)and the floor test is renamedtest_default_pin_is_at_least_the_floor_release;test_user_doc_states_the_same_default(the doc must contain exactly one`vX.Y.Z` of `trinity-skills`phrase, equal to the config default);_FLOORcomment carries the membership and supply-chain commands to run before the next bump.tests/registry.json: registers the pin guard (it was never registered).docs/memory/feature-flows/skills-library-sync.mdhistory row + footer;docs/memory/feature-flows.mdRecent Updates row.docker-compose.yml,docker-compose.prod.ymlanddocker-compose.hosted.ymlonly passTRINITY_DEFAULT_SKILL_SOURCE_REFthrough by name; none carries a value.docs/user-docs/guides/building-agents.md("v0.2.0and later" is still true: the backlog / project-* runtime skills are inv0.3.0);docs/user-docs/whats-new/v0.9.5.md(a historical note);add-*skills (self-contained fixtures).#3123 acceptance criteria
v0.3.0, and the seed note shows it.test_default_pin_is_at_least_the_floor_release(floorv0.3.0) andtest_seed_note_reports_the_configured_ref, plus proof B below (the seed note prints@ v0.3.0).moved_tag, a lost checkout recovers, and the Library holds 38 skills includingupdate-dashboard. See proofs A and B below; both show the opposite on unmodifieddev.v0.3.0:config.py,.env.exampleand the user doc, with parity enforced bytest_env_example_documents_the_same_defaultand the newtest_user_doc_states_the_same_default. The compose files are pass-through (above).Red first, per commit: the test commit makes the floor test red against
v0.2.0. The pin commit makes it green and turns the user-doc parity test red. The docs commit makes all green. The reverse direction (config back tov0.2.0with the doc atv0.3.0) reddens all three static checks.Proof (network clone + a throwaway SQLite file; no stack)
Captured at
a0db2032d. The branch's one later commit changes only docs.A. Clone-class proof. The platform's own
SkillSourceClone, against the real upstream tag, four syncs. The script exits 0 only if every check holds;--breakflips one expectation and must exit 1.A: branch → PASS, exit 0
A′: --break → FAIL, exit 1 (the exit status can fail)
A0: control on unmodified dev → FAIL (8 failed), exit 1
B. Fresh-install path end to end.
TRINITY_DEFAULT_SKILL_SOURCE*unset;import databaseruns the real seed.SkillService.sync_library()runs into a temp library root. The Redis sync lock fails open by design.B: branch → PASS, exit 0
B0: control on unmodified dev → FAIL (5 failed), exit 1
Membership check (the
_FLOORcomment's command, against both tags):Supply chain: what
v0.3.0brings into a fleet (reviewed peeled SHA7b2aa266).mdfile; no URL; no frontmatterhooks:; no render-time shell.v0.3.0tree.allowed-toolsgrows only by Trinity's ownask_operator/get_my_ask(the ask contract refresh).catalog.yamlis byte-identical between the tags.update-dashboarddeclaresautomation: autonomouswithBashand runsbash:recipes from the agent's owntemplate.yamlmetrics:entries. That is not a privilege escalation, but once scheduled it is an unattended recurring command channel.Note to the release owner
DigitalOcean/AWS marketplace images seed
v0.3.0only once rebuilt from the 1.0 backend image (packer/digitalocean/scripts/01-provision.shandpacker/aws/trinity.pkr.hclbake the images for oneTRINITY_IMAGE_TAG, set from the build'simage_tagvariable). An image built from an earlier tag still seedsv0.2.0.Follow-ups (not in this PR)
metric_read_service.pycomment claims every bundled template ships/update-dashboard#3290: comment-only. TheEMPTY_METRIC_MESSAGEcomment inmetric_read_service.pyclaims every bundled template ships/update-dashboard.Test plan
pytest unit/test_2545_skill_source_pin.py unit/test_2550_annotated_tag_pin.py unit/test_ent237_skill_source_env_packaging.py unit/test_ent237_skill_sources.py unit/test_2763_skills_url_normalized_match.py unit/test_2338_journey_catalog.py: 185 passed at the branch tip (test_2338reads the registry).v0.2.0turns the floor test and both parity tests red. The user doc alone atv0.2.0turns only the user-doc test red. A secondv0.3.0phrase in the doc turns it red with the "exactly one" message..env.examplealone atv0.2.0turns only its parity test red.tests/lint_sys_modules.pyandtests/lint_root_test_placement.pyare both OK.dev.v0.3.0in Settings. Sync all twice keeps it green, and the Library then lists 38 skills includingupdate-dashboard.Fixes #3123