Run a probe — read a repository or a tool someone else owns, answer the owner's question with evidence-classed findings, a coverage list and a verdict, and close the task by its report.
Install
npx skillscat add e1i/mikoshi-construct/probe Install via the SkillsCat registry.
Run the probe in $ARGUMENTS. A probe is the probe kind of the card in
architecture/window.md § Choosing the contour:
it produces knowledge, not a change, so it ends in a report and never in a pull request.
Boundaries
- The target is read only. Clone it into a scratch directory outside this repository (
~/.construct/<id>-<name>/)
and pin the commit; every path you cite ispath:line@<sha>. Write nothing into the target and nothing into
this repository's tree. - Foreign tests and code run only in that scratch clone. No network action on the owner's behalf: no push, issue,
comment, pull request, login, publish or account sign-up. Installing anything outside the clone waits for the
owner's yes, as in window-core. - The scoring key stays with the owner. You get the assignment only; do not look for the key, an earlier probe's
answer to the same question, or the owner's expected outcome.
Output
Write into the scratch directory, beside the clone:
findings.jsonl, one row per finding:{"id":"F01","observed_fact":"…","class":"DOC|IMPL|EXEC|INTEG|INFER","evidence":["path:line@<sha>","cmd: … → exit 0"],"supports":["F03"],"open_question":"…|null"}.
The brief may add fields (area, negative direction, boundary, enforcement); keep them. No confidence scores:
missing evidence goes intoopen_question.coverage.md: what was checked and how, what was not checked and why, every command run, every test that could
not be run and why. Prose lives only here, and only where it points to rows.
Each finding carries exactly one primary class:
- DOC — a documented claim: the quote and its
file:line. - IMPL — observed implementation: the
file:lineof the code that does it. - EXEC — a test or executable you ran or located: its name and
file:line, the command and exit code if run,
and which property it actually asserts. Located but not run is not witnessed. - INTEG — evidence that one component is wired to another: a call site, build or feature wiring, a CI step, an
installer that writes configuration. - INFER — a relationship you inferred;
supportsnames the IMPL, EXEC or INTEG rows it rests on.
Every DOC claim you checked links through supports to the rows that confirm or contradict it.
"Searched, not found" is a claim
An absence needs proof like any finding. The search reaches the path on which the value decides something — the
branch, the guard, the call that acts on it — not the loader or parser that reads it in. Put the search commands
and their output in coverage.md. A search that stopped at the loader is reported as not determined. OpenAPPA N6
failed this way on [boundary].
Verdict
One line with its reason: Capability (the construct can take this in now, and what it brings), Observe
(worth following, not yet proven; name what would settle it) or Park (not now; name why). The verdict is an
opinion over the findings, not a witness: never cite it as a red→green proof for any task.
Report and close
The report is written at every outcome, including a stop on budget or by Eddies: what was done, where it stopped,
what remains. It lives outside the repository, in the scratch directory or the shift directory.
- Line 1: the card. Then one line each, in this order:
contract: …(the question and the target pinned at its sha),expect: …(the forecast, orexpect not recorded in <where>),action: …(what was read and run),result: ….
Then the verdict line, the paths offindings.jsonlandcoverage.md,
counts by class, the tests run, and what waits for the owner. - Close with
pnpm task:close <id> --report <path> --verification <word>, the word from
AGENTS.md § The path line and its verification word,
and the reason for that word in the report. No pull request is expected.