Agent docs

Placement

Where a new rule, doc, or decision goes in this tree.

SUPERSEDED IN PART, 2026-08-24, and read this before acting on anything below.

The 2026-08-20 ruling this file records was reversed on 2026-08-21 by the three-repo split. versable-git/versable-foundry is NOT a redundant holding pen to be archived; it is the canonical home of the contract, it now also carries the runner under runner/, and it was pushed current on 2026-08-24. The paragraph below headed "Where it came from" says the opposite and is wrong.

This copy was NOT deleted, deliberately. apps/playground/src/lib/docs-registry.ts lines 276-307 read this directory from disk by absolute path (README, charter, system-classes, DO-NOTS, this file, CHANGELOG, plus canon/ and contracts/), so removing it breaks the playground's documentation site. canon/12 forbids two copies and this is a real violation, but the fix is to re-point the playground, not to delete the directory under it.

The fix, for whoever picks this up (vb-fable). Use the estate's house pattern rather than inventing one: sparse-checkout of versable-foundry at build time, injected into the playground, never vendored and never a submodule. That pattern is already used seven times across four slack-automation workflows and is documented at slack-automation/ci-kit/README.md:220-230. The owner ruled @main for the ref while the contract churns.

Left by gcp-watcher, 2026-08-24, owner-authorised, while vb-fable was down. Full backup of all three contract copies: ~/Versable-reconcile-backups/20260824-1929/.

contract/ sits beside docs/ rather than inside it, on the owner's ruling of 2026-08-20: the infrastructure, auth and module contract is more primary than component styling, and the tree should say so.

The two are different halves and neither contains the other. docs/ is the kit and the screens built on it: what a component is, where truth lives for it, how a page is composed. contract/ is what a module must do to be one: its surface, its manifest, its identity, its job lifecycle, its outputs. A module author never reads docs/, and a screen author never reads contract/.

Where it came from#

versable-git/versable-foundry, a holding pen created 2026-08-18 while the placement was undecided. That repo is redundant once this lands and should be archived rather than left as a second copy, which canon/12 forbids in as many words: a version is built once and pointed at, never duplicated.

What is authoritative here#

00-charter.md first, then canon/ for the rules and contracts/ for the wire shapes. DO-NOTS.md is GENERATED from the Do-nots section of every canon and pattern doc by scripts/build-do-nots.py; edit the source and regenerate, never the generated file.

plans/, evidence/ and instances/ are working material rather than rules. An evidence/ file is a dated read of something outside this tree and is true as of its date; an instances/ file is a concern-by-concern read of a system that implements this contract.

The scripts#

Three Python files in scripts/, in an otherwise TypeScript repo. They are here because they read and write the documents beside them:

  • build-do-nots.py regenerates DO-NOTS.md
  • build-manifest-schema.py regenerates contracts/manifest.schema.json
  • check-examples.py validates every example in the tree against the schemas it also generates

Run all three before proposing a change to any doc they touch.

@versable-git/ui · reference, canon, and method, read in place