Skip to content

docs: the handbook is the source, the KB is a build artifact - #212

Merged
vicenteliu merged 1 commit into
mainfrom
docs/adr-0038-handbook-is-the-source
Aug 22, 2026
Merged

docs: the handbook is the source, the KB is a build artifact#212
vicenteliu merged 1 commit into
mainfrom
docs/adr-0038-handbook-is-the-source

Conversation

@vicenteliu

Copy link
Copy Markdown
Owner

ADR-0038. sysadmin-self-cultivation (SSC) is a public handbook whose material is the same material the KB needs — runbooks, platform mechanics, the operating model behind a triage decision. This records which copy is true when the two disagree.

SSC is the single source. The KB is a build artifact, and nothing edits it by hand. Ingestion runs one way and never back.

Why not both, and why not the other way

Two hand-maintained copies drift from the first edit that lands on one side and not the other. Drift here is expensive in a particular way: the KB grounds citations, so a stale chunk produces a confidently cited wrong answer with an audit trail that looks clean.

The reverse direction does not invert. A handbook chapter is prose with an argument in it; a chunk is a retrieval unit. Chunking prose is mechanical; reconstituting an argument from chunks is not — so whichever side is generated has to be the cheaper projection.

Second reason, particular to this pairing: SSC is entirely public. Making it the only inbound path means "private material must never reach the KB" is not a rule anyone has to remember — there is no channel for it to arrive through.

What follows

  • Build script lives here, not in SSC. A handbook that knows the name of its consumer is coupled to it. Interface: opspilot kb ingest --profile ssc --source <path>, path as a parameter or env var, never a constant.
  • Manual runs + a dry run in CI. No scheduled job. SSC changes a commit or two a week; a cron over that spends nearly all runs doing nothing — exactly where a silently broken job and a correctly idle one produce the same empty log.
  • Conflict detection reports back to SSC. Two handbook modules contradicting each other are a bug in the handbook, not a downstream KB condition — the Conflict/Resolution machinery from ADR-0029 / ADR-0037 is for genuinely competing sources, not one source disagreeing with itself. Write a file for a human; don't open issues automatically.

Cost accepted

Anything the KB wants that has no readable home in the handbook must either earn a place in SSC's prose or not exist. That is the point — it keeps KB contents traceable to something a person has read and stands behind.

Docs only; no code paths touched.

🤖 Generated with Claude Code

ADR-0038. `sysadmin-self-cultivation` (SSC) is a public handbook whose material
is the same material the KB needs — runbooks, platform mechanics, the operating
model behind a triage decision. This records which copy is true when the two
disagree.

**SSC is the single source. The KB is a build artifact, and nothing edits it by
hand.** Ingestion runs one way and never back.

Two hand-maintained copies drift from the first edit that lands on one side and
not the other, and drift here is expensive in a particular way: the KB grounds
citations, so a stale chunk produces a confidently cited wrong answer with an
audit trail that looks clean.

The other direction does not invert. A handbook chapter is prose with an
argument in it; a chunk is a retrieval unit. Chunking prose is mechanical;
reconstituting an argument from chunks is not. Whichever side is generated has
to be the cheaper projection.

Second reason, particular to this pairing: SSC is entirely public. Making it the
only inbound path means "private material must never reach the KB" is not a rule
anyone has to remember — there is no channel for it to arrive through.

What follows:

- The build script lives here, not in SSC. A handbook that knows the name of its
  consumer is coupled to it. Interface:
  `opspilot kb ingest --profile ssc --source <path>`, path as a parameter or env
  var, never a constant.
- Manual runs plus a dry run in CI, no scheduled job. SSC changes a commit or
  two a week; a cron over that spends nearly all runs doing nothing, which is
  exactly where a silently broken job and a correctly idle one produce the same
  empty log.
- Conflict detection reports back to SSC. Two handbook modules that contradict
  each other are a bug in the handbook, not a downstream KB condition — the
  Conflict/Resolution machinery from ADR-0029 and ADR-0037 is for genuinely
  competing sources, not one source disagreeing with itself. Write a file for a
  human; do not open issues automatically.

Cost accepted: anything the KB wants that has no readable home in the handbook
must either earn a place in SSC's prose or not exist. That is the point — it
keeps KB contents traceable to something a person has read and stands behind.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vicenteliu
vicenteliu force-pushed the docs/adr-0038-handbook-is-the-source branch from ecf68a1 to a2fd62f Compare August 22, 2026 05:02
@vicenteliu
vicenteliu merged commit 206a1f7 into main Aug 22, 2026
4 checks passed
@vicenteliu
vicenteliu deleted the docs/adr-0038-handbook-is-the-source branch August 22, 2026 05:45
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