Skip to content

docs: the CLI had no page, and a domain's completeness rule had no home - #239

Merged
retr0h merged 1 commit into
mainfrom
docs/provider-boundary-and-tests
Oct 1, 2026
Merged

retr0h merged 1 commit into
mainfrom
docs/provider-boundary-and-tests

Conversation

@retr0h

@retr0h retr0h commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

You asked me to audit whether anything else was missing from the corpus. It was.

The audit

Every subject the add-a-domain skill cites, checked against components/. 25 of 30 had a home. Five did not, and four were the same hole.

NO HOME IN THE CORPUS:
  - domain: appears everywhere an existing one does
  - cli: one parent cmd per domain, one sub per endpoint
  - cli: PrintKV / PrintCompactTable
  - cli: --target accepts literal/_any/_all/label
  - cli: every response code in the status switch

There was no page for the CLI at all. The provider, the agent, domains, the SDK, the UI, exec, audit, permissions, the transport and the job system each have one. The CLI is 156 files and had nothing.

cli.md

Written from cmd/client_*.go and internal/cli/, with the counts measured:

  • a shell over the SDK that parses flags, calls one method, renders. No command talks to the controller and none holds logic the SDK does not
  • one command per endpoint, in a file named after the path it serves
  • identifiers are required flags, never positional arguments, so required-ness is declared and the error is the parser's
  • two flags declared once and inherited: --json on the root, --target on client node defaulting to _all. Nothing per-domain redeclares them, which is why their meaning cannot drift between domains
  • --json prints the response's raw bytes and returns before anything is formatted, so a field added to a response reaches script consumers without a command changing
  • four shared renderers rather than per-command formatting, and BuildBroadcastTable so a one-host and a forty-host answer render through the same path
  • one error handler, called by all 120 commands that can fail

The fifth gap

A domain is a provider, a processor and its registration, a spec and generated code, a handler and route, an SDK service, commands, docs and permission tables. Missing one is not a smaller domain, it is one that works until somebody reaches it the way the missing layer would have. That is a rule about building a domain, so it is in domains.md with the grep that checks it.

Still queued

The 58 dead FR- pointers in the skill. Every subject now has somewhere to point, which was the blocker.

Also worth knowing: #238 merged with more than its description said. The two sections for what a provider does not touch and what its tests owe were in the working tree when I switched branches and commit -a swept them in. They are correct and on main; the squash title on main is the pre-reframing one.

just test passes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FuKUsHFG1EqZXamffh9M2c

Audited every subject the add-a-domain skill cites against the corpus. 25 of
30 had a home. Five did not, and four of those were the same hole: there was
no page for the CLI at all, while the provider, the agent, domains, the SDK,
the UI, exec, audit, permissions, the transport and the job system each have
one.

cli.md states what the layer is: a shell over the SDK that parses flags,
calls one method and renders, holding no logic the SDK does not. One command
per endpoint in a file named after the path it serves. Identifiers as
required flags rather than positional arguments. Two flags declared once and
inherited, --json on the root and --target on client node. JSON returning the
response's raw bytes before anything is formatted, so a new field reaches
script consumers without a command changing. Four shared renderers rather
than per-command formatting. One error handler, called by all 120 commands
that can fail.

The fifth was the cross-layer rule, that a domain is a provider, a processor,
a spec, a handler, an SDK service, commands, docs and permission tables, and
missing one of those is a bug rather than a smaller domain. That is a rule
about building a domain, so it goes in domains.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FuKUsHFG1EqZXamffh9M2c
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

Thank you for contributing to this project! 😊🕹️

@retr0h
retr0h merged commit d2dcd28 into main Oct 1, 2026
5 checks passed
@retr0h
retr0h deleted the docs/provider-boundary-and-tests branch October 1, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant