Skip to content

[DMC-010] Exit 2 is overloaded between the honest lane and argparse usage errors #15

Description

@chaoz23

Exit 2 currently carries two unrelated meanings:

  1. the codified honest lane — unusable input/charter, a first-class cannot-adjudicate verdict that SKILL.md tells agents to route to a human without retrying
  2. an ordinary argparse usage error — e.g. dmcheck --zzz-not-a-real-flag → exit 2

The two are distinguishable only by whether stdout happens to contain JSON.

An agent obeying SKILL.md escalates its own malformed invocation to a human as if it were a ruling — when the correct response is to fix the call and retry.

For contrast, srdcheck separates these cleanly: bad flags return 3, documented as "a usage/internal error (fix the call), never a verdict."

Suggested fix: move usage errors off exit 2 (srdcheck's exit-3 convention is the family precedent), or document the disambiguation rule explicitly in SKILL.md so agents can classify reliably.

Severity is deliberately low: the honest lane still works, and the JSON envelope disambiguates for anyone parsing stdout. Filed so it is not rediscovered.


Found by a conformance audit of the check-family four (srdcheck, charactercheck, dmcheck, table-kit) against FAMILY.md v1 on 2026-08-17. Audited at working-tree HEAD, which was 1–3 commits ahead of origin/main and 0 behind, so absences hold for main. Every claim below was verified by execution or by git grep across all local heads, then independently re-derived by a second pass instructed to refute it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions