From ac35f2441f4d75afe2d39b795e1f75ca31bc3be5 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Tue, 22 Sep 2026 00:49:22 -0700 Subject: [PATCH] docs(u5): state what the contract deliberately leaves out MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The out-of-scope block is load-bearing for the cross-frontier review gates — without negative constraints their signal-to-noise drops sharply, and both /heid-code-review and /heid-bug-hunt refuse to fire without one. Written for the reviewer, but it is the same list the roadmap gate produced: the what-landed feed is parked for v1.1, nothing enforces that a booth must announce itself (rsync is a documented path and never runs the CLI), and the manifest describes rather than decides — U4 owns lifetime. --- docs/contracts/u5_booth_manifest.contract.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/contracts/u5_booth_manifest.contract.md b/docs/contracts/u5_booth_manifest.contract.md index 5f53f19..ca4bb3d 100644 --- a/docs/contracts/u5_booth_manifest.contract.md +++ b/docs/contracts/u5_booth_manifest.contract.md @@ -224,6 +224,26 @@ guarded with an explicit `{% if %}` rather than relying on `b.manifest.handle` rendering as Undefined, because the two lanes' cards differ and a silent Undefined in one of them is how the kept lane would quietly keep the old defect. +## Out of scope + +Deliberately deferred or never. Divergence here is not drift. + +- **A second index ordering keyed on `created`** — a "what landed" feed. Operator + decision, 2026-09-22: parked for v1.1. It is a new ordered collection needing + its own stated rule, it competes with the existing order for what "the third + one" means, and it has nothing to sort the 26 manifest-less booths by. +- **`why` in the zip manifest, or a `booth ls` column.** One-liners over the + same record, neither on the v1 path. +- **Enforcing that a booth MUST announce itself.** `rsync` is the documented + path for every host that is not nh3-dev and never runs the CLI, so a refusal + would break the documented workflow. The marker is the whole mechanism. +- **Deleting, expiring or migrating anything based on the manifest.** U4 owns + lifetime; this unit only describes. +- **Any change to how items, marks, blur, keep or the link board work.** The + manifest is a dotfile and every existing listing already skips it. +- **Auth, or treating a manifest as trusted.** Standing non-goal; the Booth is + LAN-internal and a hand-written `.booth.json` is a supported input. + ## Invariants **INV-1 — one resolver for the manifest.** `read_manifest(booth)` is the only