Skip to content

docs(rdd-audit): name the CLI's citation audit and retire audit-citations.mjs - #39

Open
jussi-modernpath wants to merge 2 commits into
mainfrom
cli-citation-audit
Open

jussi-modernpath wants to merge 2 commits into
mainfrom
cli-citation-audit

Conversation

@jussi-modernpath

@jussi-modernpath jussi-modernpath commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

What changes

skills/rdd-audit/SKILL.md

  • The citation check names the ModernPath command in the package's usual form: "In ModernPath, use modernpath audit citations …". It replaces node <skill-directory>/audit-citations.mjs …. The text keeps the script's contract: grammar, exemptions, resolution, report and exit statuses 0/1/2.
  • Exit 2 lists every cause the command has: a missing or unreadable target, an invalid inventory or missing Git, an invalid flag, or a refused prompt target.
  • A run that never started: a run that printed no report did not run, whatever its exit status. A CLI without the command answers unknown command "audit" with exit 1. modernpath audit citations --help exits 0 only when the command exists.
  • When the audit cannot run:
    • keep the error, read each citation the review relies on, and report the check as not run, never as passed;
    • a check that did not run does not by itself block the gate the review serves;
    • a run refused by its environment is a stop.
  • Delegated passes: when a delegated pass cannot run commands, the orchestrating session hands it the command line, exit status, standard output and error, and each declared repository's revision. The pass lists the check as not run when that command line doesn't name the documents and repositories under review.

Other files

  • skills/rdd-reverse-engineer/references/coverage.md now says "Use rdd-audit and the citation audit it names" instead of "its supplied audit-citations.mjs".
  • skills/rdd-audit/audit-citations.mjs and skills/rdd-audit/audit-citations.test.mjs are removed.

Why

A customer's agent on Windows could not run the citation audit during a cold review. The script needs Node.js, which the CLI neither ships nor checks. Planning found more faults in the same script:

  • The copy of rdd-audit that Claude Code loads names a script that install never puts beside it.
  • On Windows it reports nearly every citation missing.
  • Citations of gitignored files never resolve.
  • Its elided-path pattern never matches.

ModernPath decided (USER:2026-10-09:citation-audit-in-cli, USER:2026-10-09:retire-audit-citations-mjs) that the CLI runs the audit and that the script is retired. The command is built in ModernPath/modernpath-v1#873.

Tool naming

The README's Distribution rule says the distribution tool names the sanctioned tool. The skill follows it in the form other package skills use (USER:2026-10-13:in-modernpath-form): it states the checker's contract and names the ModernPath command as ModernPath's instance. A consumer without the ModernPath CLI needs an equivalent checker for that contract. Until it has one, the not-run rule applies.

Cold review

An independent cold review found nothing blocking and four should-fix items. The second commit fixes the text items: the old-CLI case, what the pass is handed, the tool naming, the exit-2 list and the wording. The merge-method item is answered below.

The review also asked whether a check that did not run blocks a gate. Decided (USER:2026-10-13:not-run-check-does-not-block): it does not by itself; the review records it as not run and the human sees that at the gate.

Merge — merge commit, then #873

  • Merge this PR with a merge commit, not squash or rebase. ModernPath/modernpath-v1#873 embeds this branch's head commit and checks that pin by SHA. Only a merge commit keeps that commit on main.
  • Merge #873 right after, so main never names a command that no CLI on its main has.
  • The command reaches customers with a later CLI release, which is a separate act.

Merging is the maintainer's decision.

🤖 Generated with Claude Code

jussi-modernpath and others added 2 commits October 12, 2026 15:28
…ions.mjs

The citation audit that rdd-audit prescribes, and that rdd-cold-review and
rdd-completion-review reach through it, moves into the `modernpath` CLI as
`modernpath audit citations` (ModernPath decision
USER:2026-10-09:citation-audit-in-cli and :retire-audit-citations-mjs). A
customer session on Windows had no Node.js to run the script, the skill copy
installed under .claude/skills named a script that is not installed beside
it, the script reported nearly every citation missing on Windows, and its
elided-path pattern never matched.

- rdd-audit's citation check names `modernpath audit citations`, with the
  same arguments, grammar, exit statuses and report.
- rdd-audit states what to do when the audit cannot run: keep the error,
  read each citation the review relies on, and report the check as not run,
  never as passed; a reviewer without a shell gets the run, or the error,
  from the agent that runs it.
- The coverage reference says "the citation audit it names" instead of the
  supplied script; its pinned wording is unchanged.
- skills/rdd-audit/audit-citations.mjs and its test are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y what a not-run check means

Fixes from the cold review of this pull request:

- The check names the command the package's usual way, "In ModernPath, use
  `modernpath audit citations`", so the README's Distribution rule still
  holds and a reader without the ModernPath CLI gets a coherent instruction.
- A run that printed no report did not run, whatever its exit status. A CLI
  without the command answers `unknown command "audit"` with exit 1, which
  read like a finding. `modernpath audit citations --help` exits 0 only when
  the command exists.
- Exit 2 now lists every cause the command has: an unreadable document,
  missing Git and an invalid flag.
- A citation check that did not run does not by itself block the gate the
  review serves. A run refused by its environment is a stop (PROCESS.md
  "Delegated passes").
- When a delegated pass cannot run commands, the orchestrating session hands
  it the command line, exit status, standard output and error, and each
  declared repository's revision. The pass lists the check as not run when
  that command line does not name the documents and repositories under
  review.
- The checker's description includes backticked `path.ext:locator`
  citations, which it already resolves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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