Files
sow-tools/docs/adr/0003-crucible-binary-contract-standalone-shims-fail-closed-scaffold.md
T
archvillainetteandClaude Opus 5 03e193d8cb
ci / ci (pull_request) Canceled after 21s
docs: adopt workspace-wide agent standards and retire sow-docs
Scaffold the per-repo configuration the engineering skills expect, and put
the three-way split of work into standing law:

- Live work -> wayfinder maps + Gitea issues (closeable, assignable,
  queryable).
- Settled decisions -> ADR files in docs/adr/ (immutable, findable, never
  closed).
- Standing law -> DOCTRINE.md / AGENTS.md / CONTEXT.md.

Adds docs/agents/{issue-tracker,triage-labels,domain}.md and an
"Agent skills" section in AGENTS.md. The tracker doc records Gitea via the
tea CLI, the wayfinder map/ticket/blocking operations, and the rule that
issues follow ownership: file work in the repo that owns it, not the one you
happen to be standing in.

ADR-0001 (markdown is reference, law, or an ADR - nothing else) is adopted
from sow-codebase so the rule is local to every repo.

sow-docs is retired: its 35 decisions become ADRs in the repos that own them,
its living docs move to sow-platform and sow-assets-manifest, and its
unfinished intent becomes Gitea issues.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-24 20:30:28 +02:00

1.7 KiB

ADR-0003: Crucible binary contract: standalone shims, fail-closed scaffold, no committed binaries

  • Status: Accepted

  • Date: 2026-06-11

  • Migrated from: sow-docs 07-decisions-log.md entry D19, on the retirement of sow-docs. Content is the original decision, unchanged.

  • Decision: Phase 5 builds migration/sow-tools (Crucible, D11) as a multi-binary Go scaffold:

    • One crucible dispatcher plus standalone crucible-{depot,hak,module,topdata,wiki} binaries sharing one registry (internal/dispatch). The dispatcher is for humans/CI; the standalone shims are canonical for consumers so wrapper scripts resolve a single-token command and "$builder" args quoting stays correct.
    • Consumer resolution order: explicit env override ($SOW_MODULE_BUILD/$SOW_TOPDATA_BUILD/$CRUCIBLE) → crucible-<name> → legacy sow-<name>-build. CI runs inside the pinned crucible:<sha> image.
    • Every builder is unwired in the scaffold and fails closed (exit 70); it never fakes an artifact. The internal/ logic is migrated from gitea/sow-tools by the operator at cutover (hard rule: no source transplant by tooling).
    • Binaries are never committed — they are CI artifacts / image layers. Retires the committed nwn-tool / tools/sow-toolkit.
    • Builders take NWN_ROOT only via explicit env/flag; no $HOME defaulting.
  • Rationale: Locks the command surface, container, and CI shape so migrated logic drops into a stable frame; aligns the three artifact repos onto one Crucible contract while keeping back-compat with the pre-D11 skeletons.

  • Image name: registry.westgate.pw/deployment/crucible:<git-sha> (the bare crucible:<sha> is the local/dev tag).