Skip to content

TEMP: proving CI catches a planted override block - #2

Closed
ms-shashank wants to merge 2 commits into
mainfrom
ci-proof/override
Closed

TEMP: proving CI catches a planted override block#2
ms-shashank wants to merge 2 commits into
mainfrom
ci-proof/override

Conversation

@ms-shashank

Copy link
Copy Markdown
Member

Scratch PR. Planted an oxcode:final-override block in plugins/ml/skills/ml/SKILL.md to confirm the CI check fires on a real run rather than only in a local grep. Will be closed and the branch deleted.

Two changes, and the second is the one that had to land before this repository
invites anyone.

THE LAYOUT. A plugin is the thing you install, and a skill is one of the things
a plugin contains. Verified against a real installation of the reference
implementation rather than assumed: a repository containing only skills still
becomes marketplace, then plugin, then version. The unit is uniform even when
the payload is one skill.

Adopting it now is not only future-proofing. Consent is a fingerprint over the
whole plugin directory INCLUDING files the loader does not read, so that
teaching the loader to read more later cannot widen what was agreed to without
re-asking. A plugin directory makes that hold for free when MCP servers and
hooks arrive. Leaving it flat would mean a cache migration and a forced
re-consent for everyone who ever installed anything, because the fingerprint
boundary itself moves.

  skills/<id>/SKILL.md  ->  plugins/<name>/skills/<id>/SKILL.md

The seven ML stages are published here as ONE plugin carrying seven skills,
which is the multi-skill case the format always allowed and nothing had
exercised. That is what dogfoods the install path.

WHY TEACH IS NOT HERE, since it is the obvious omission. Teach needs the
final-override slot for exactly one thing: outranking the shared brevity rule.
An installed skill never receives that slot, because a downloaded file
overruling a safety rule is what the boundary exists to prevent. A published
teach would therefore carry that paragraph demoted into its body, where it sits
before the rule it argues with and loses on recency, which is precisely the
failure the slot was invented to fix.

Shipping it with a note in the file was the wrong answer: the person affected is
the user who installs it and sees a picker entry and a consent screen, neither
of which says this is a reduced copy. The ML family already covers everything
the install path needs, so teach adds visibility rather than coverage, and it
comes back byte-identical once the cause is fixed.

CI, AND WHY IT COMES FIRST. A contributor whose first pull request is rejected
by a check learns the rule in thirty seconds. One whose skill merges and then
silently does nothing learns that we do not review, and that cannot be taken
back. So the checks land in the same change as the invitation: no override
block, no model or provider named, every plugin has a manifest that parses,
every plugin is listed and every listing exists, every SKILL.md has frontmatter
carrying name and description.
@ms-shashank

Copy link
Copy Markdown
Member Author

Scratch PR, its job is done. All three content checks confirmed failing on real runs: the override block, a named model, and an unlisted plugin. Closing and deleting the branch.

@ms-shashank
ms-shashank deleted the ci-proof/override branch August 11, 2026 22:05
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