ADR 0013 rejects lone slash-command .md files at validate: they have no directory, no frontmatter name:, and no description:, so there is nothing to install and nothing for an agent to discover. Under install-and-discover they are untestable by construction, and a hard error is the honest response.
But "untestable by this discipline" is not "untestable." A slash command is invoked by a human typing /name — that's its real usage, and it's a legitimate thing to measure. Caliper's single-shot harness simply never types one.
The proposal: a second discipline where caliper invokes the command by writing /name into the prompt, faithful to how it is actually used. activates: does not apply — nothing was discovered, so nothing was chosen. Only expect:/assert: do.
Why it wasn't in v1: it is a second loading discipline landing in the same release as ADR 0013, whose entire claim is that there is only one. Shipping both at once would make the ADR untrue on the day it merged. This needs its own ADR stating why the exception is principled rather than a hole.
Open questions:
- How does a spec distinguish "install this" from "invoke this"? A separate
commands: block, or an entry shape inside skills:?
- Does the invoked command still get installed anywhere, or is it purely a prompt prefix?
caliper validate currently errors on these — the error text should point here once this exists.
Blocked on #18.
ADR 0013 rejects lone slash-command
.mdfiles atvalidate: they have no directory, no frontmattername:, and nodescription:, so there is nothing to install and nothing for an agent to discover. Under install-and-discover they are untestable by construction, and a hard error is the honest response.But "untestable by this discipline" is not "untestable." A slash command is invoked by a human typing
/name— that's its real usage, and it's a legitimate thing to measure. Caliper's single-shot harness simply never types one.The proposal: a second discipline where caliper invokes the command by writing
/nameinto the prompt, faithful to how it is actually used.activates:does not apply — nothing was discovered, so nothing was chosen. Onlyexpect:/assert:do.Why it wasn't in v1: it is a second loading discipline landing in the same release as ADR 0013, whose entire claim is that there is only one. Shipping both at once would make the ADR untrue on the day it merged. This needs its own ADR stating why the exception is principled rather than a hole.
Open questions:
commands:block, or an entry shape insideskills:?caliper validatecurrently errors on these — the error text should point here once this exists.Blocked on #18.