Skip to content

feat(brains): publish the generated flow skills and recut brains-build [BRNS-CORE-011] [BRNS-CORE-012] - #23

Merged
olegshmuelov merged 1 commit into
mainfrom
feat/publish-flow-skills
Aug 9, 2026
Merged

feat(brains): publish the generated flow skills and recut brains-build [BRNS-CORE-011] [BRNS-CORE-012]#23
olegshmuelov merged 1 commit into
mainfrom
feat/publish-flow-skills

Conversation

@olegshmuelov

@olegshmuelov olegshmuelov commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

What this delivers

Publishes the three flow skills (brains-board / brains-automation / brains-workflow) and the recut brains-build, rendered from ssvlabs/brains 864c45fa (stamped as the manifest's source_commit). Version 2.7.1 → 2.8.0 — hosts update on version, so the bump is the delivery. brains-write is re-rendered with quoted frontmatter (monorepo #1245).

Closes BRNS-CORE-011 and BRNS-CORE-012.

Generated, not authored here

The five skill artifacts are byte-identical rendered copies of the monorepo's capability catalog; the manifest digest-pins each one. Do not hand-edit them — fixes belong upstream and arrive by regeneration.

Contract-test changes

Skill-set pin 7 → 10; trigger-owner disjointness asserted in both directions from the authored trigger arrays; the secret-hygiene rails asserted positively (three rule sentences); the leak denylist narrowed to true internal identifiers — automation_secret and telegram_push are registered tool names the automation skill must teach, not leaks.

Verification

Contract suite green with a real claude plugin validate --strict; delivery guard passes 2.7.0 → 2.8.0; mutation proofs (rail deletion, trigger collision, unbumped version) each fail the intended assertion. Codex review of this diff: clean on the delivery itself; four findings in the generated procedure content filed upstream as BRNS-CORE-057 — that content is already live in production on the web-agent surface, so it does not gate this delivery.

nir-ssvlabs
nir-ssvlabs previously approved these changes Aug 9, 2026

@nir-ssvlabs nir-ssvlabs left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM on the delivery itself — but there's a merge-ordering hazard with #22 that isn't visible from inside either PR, so please read the last section before merging.

Verified rather than assumed (the invariant here is "these bytes are the monorepo's, unmodified"):

  • All five artifact digests match their bytes. I recomputed sha256 over each artifact_path and compared to the declared artifact_sha256 — 5/5 match, including the two re-rendered files (brains-write, brains-build), so nothing was hand-edited and the digest wasn't refreshed to cover an edit. source_commit 864c45fa is a real commit on the monorepo.
  • The version-only manifest diff is correct, not an omission. Skills are directory-discovered on both clients — the Claude manifest has no skills key and the Codex manifest points at ./skills/ — so three new skill directories ship without being enumerated. Worth stating because "3 skills added, manifests only changed a version string" is exactly the shape that would be a reaches-nobody bug if either client required a manifest list.
  • 2.7.0 → 2.8.0 on both manifests, aligned and forward, and minor-shaped matches the convention #22 documents (feat(…) → minor).
  • Contract pin correctly enumerates all ten skills alphabetically, with the three new ones in the digest map.

⚠️ Merge order matters, and getting it wrong silently breaks #22 rather than this PR. Both PRs branch from main at 2.7.0: this one goes to 2.8.0, and #22 (the claude.ai capture-claim fix) goes to 2.7.1.

  • #22 first, then this2.7.0 → 2.7.1 → 2.8.0, both strictly forward, both guards pass.
  • This first, then #22#22 becomes 2.8.0 → 2.7.1, a downgrade. Its delivery guard fails by design (that guard compares SemVer precedence precisely so a downgrade can't slip through), and if anyone waves it through, #22 publishes a version below the live one — so hosts stay on 2.8.0 and the capture-claim fix reaches zero users while looking merged. That's the exact failure mode the guard was written for.

So: merge #22 before this one, or if this lands first, #22 needs a re-bump to 2.8.1 before it can go. No change needed here either way — this PR is correct standalone; the constraint just isn't observable from either PR's own checks, since each is green against a main that still reads 2.7.0.

Approving.

…d [BRNS-CORE-011]

Publishes brains-board, brains-automation and brains-workflow as their own
routable skills, recuts brains-build as the capability inventory that yields to
them, and refreshes brains-write. All five are generated from the capability
catalog in ssvlabs/brains and are digest-pinned by the manifest.

Plugin content reaches users only when the version increases, so the 2.7.1 ->
2.8.0 bump is the delivery, not bookkeeping.

Contract test changes the regeneration forces:
- extend the artifact map and capability-id pin from two entries to five
- re-pin the skill set to the sorted ten, and record why the eager-metadata
  budget was spent on three routable procedures rather than abandoned
- drop automation_secret and telegram_push from the internal-capability
  denylist: both are registered MCP tools, so the list was conflating internal
  code identifiers with user-facing tool names and would fail a correct artifact
- assert instead that the secret-hygiene rails are PRESENT in brains-automation,
  which nothing here would otherwise notice being deleted
- rebuild trigger disjointness around per-skill phrase ownership, so the check
  pins brains-build's yield rather than sampling phrases it no longer claims
@olegshmuelov
olegshmuelov merged commit fe4f17b into main Aug 9, 2026
4 checks passed
@olegshmuelov
olegshmuelov deleted the feat/publish-flow-skills branch August 9, 2026 10:34
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