Skip to content

Commit 489ca9f

Browse files
committed
docs: substantive CRG C annotation (EXPLAINME.adoc)
1 parent f408d18 commit 489ca9f

1 file changed

Lines changed: 115 additions & 5 deletions

File tree

EXPLAINME.adoc

Lines changed: 115 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,134 @@
11
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
// Copyright (c) 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
23
= Seamstress — Show Me The Receipts
34
:toc:
5+
:toclevels: 3
46
:icons: font
57

6-
The README makes claims. This file backs them up.
8+
The README makes claims. This file backs them up with code paths, caveats, and honest gaps.
9+
10+
== Claim 1: Architectural Seams as First-Class Artifacts
711

812
[quote, README]
913
____
10-
Seamstress: Architectural seams as first-class artifacts—documented, checkable, evolvable boundaries between components.
14+
Seamstress: Architectural seams as first-class artifacts—documented, checkable, evolvable
15+
boundaries between components.
16+
____
17+
18+
*How it works:* A seam is recorded as a `*.seam.json` file validated against
19+
`seams/schema/seam-record.schema.json`. The schema requires 22 top-level fields including `id`,
20+
`title`, `status`, `owners`, `side_a`, `side_b`, `boundary_type`, `data_flows`,
21+
`contract_artifacts`, `compat_policy`, `semantic_invariants`, `security_invariants`,
22+
`privacy_invariants`, `test_vectors`, `checks`, `slo`, `failure_behavior`, `observability`,
23+
`change_process`, and `rollout_backout`. Each record is a machine-checkable specification of a
24+
boundary between two components. The canonical seam truth engine is `tools/seamctl` (Rust), which
25+
validates records and generates reports. `services/seamstressd` (Elixir, optional) orchestrates
26+
automated checks and future agentic workflows without being allowed to redefine seam semantics —
27+
that responsibility stays exclusively in `seamctl`.
28+
29+
*Honest caveat:* `seamctl` is at an early stage; the HANDOVER.adoc describes the intended repo
30+
layout in full but several tool subdirectories are scaffolding rather than implemented code. The
31+
authoritative seam validation logic in Rust is the critical path and is not yet complete.
32+
33+
== Claim 2: Five Seam Type Taxonomy
34+
35+
[quote, SEAMS.adoc]
36+
____
37+
Seam types: Contract, Translation, Containment, Governance, Interaction
1138
____
1239

40+
*How it works:* `SEAMS.adoc` defines five orthogonal seam types: Contract (schemas, IDLs, API
41+
surfaces), Translation (representation mapping, adapters), Containment (isolation, retries,
42+
timeouts, backpressure), Governance (ownership, approvals, rollout/backout), and Interaction
43+
(human-machine boundaries: consent, reversibility, audit). A seam record's `boundary_type` field
44+
must be one of these five, which constrains what `compat_policy`, `semantic_invariants`, and
45+
`checks` fields need to contain. The taxonomy allows `seamctl` to apply type-specific validation
46+
rules, so a Containment seam gets checked for backpressure SLOs while a Governance seam gets
47+
checked for owner-approval records.
48+
49+
*Honest caveat:* The type-specific validation rules in `seamctl` are not yet fully implemented.
50+
The JSON schema enforces structural validity; semantic validation per seam type requires additional
51+
Rust logic that is specified in HANDOVER.adoc but not yet coded.
52+
53+
== Dogfooded Across The Account
54+
55+
[cols="1,2,1"]
56+
|===
57+
| Repo | How Seamstress is used | Status
58+
59+
| `seamstress` itself
60+
| `seams/records/_example.seam.json` is the reference seam record; Hypatia CI validates workflows
61+
| Active (scaffolding)
62+
63+
| `kea`
64+
| Kea's Mandible→Call→Bivouac boundary is an ideal candidate for a Contract seam record
65+
| Planned
66+
67+
| `laminar`
68+
| Elixir control plane ↔ Rclone data plane boundary fits a Containment seam
69+
| Planned
70+
71+
| `burble`
72+
| Elixir↔Zig NIF boundaries and WebRTC↔BEAM transport seams are natural targets
73+
| Planned
74+
75+
| `idaptik`
76+
| VM↔engine and level-architect↔main-game boundaries are Governance seam candidates
77+
| Planned
78+
|===
79+
80+
Seamstress is a meta-tool; its dogfooding story depends on the `seamctl` validator reaching
81+
sufficient maturity to validate real seam records in other repos.
82+
1383
== File Map
1484

15-
[cols="1,2"]
85+
[cols="1,3"]
1686
|===
1787
| Path | What's There
1888

19-
| `test(s)/` | Test suite
89+
| `seams/schema/seam-record.schema.json`
90+
| JSON Schema (Draft 2020-12) for seam records: 22 required fields, enum constraints on status/boundary_type
91+
92+
| `seams/records/_example.seam.json`
93+
| Reference seam record demonstrating all required and optional fields
94+
95+
| `seams/checklists/`
96+
| Human-readable checklists: `no-hidden-channels.adoc`, `conformance.adoc`, `evolution.adoc`
97+
98+
| `seams/vectors/`
99+
| Test vector directory for conformance testing (structure present; vectors TBD)
100+
101+
| `seams/reports/`
102+
| Generated report output directory (gitignored)
103+
104+
| `SEAMS.adoc`
105+
| Seam type taxonomy (Contract/Translation/Containment/Governance/Interaction) and record model
106+
107+
| `ARCHITECTURE.adoc`
108+
| Core vs orchestration: `seamctl` (Rust) is authoritative truth engine; `seamstressd` (Elixir) is optional orchestrator
109+
110+
| `BOUNDARIES.adoc`
111+
| What Seamstress is NOT: not an enterprise modelling platform, not a static analysis suite, not language-specific
112+
113+
| `PHILOSOPHY.adoc`
114+
| Design philosophy: seams as living documents, evolvability over perfection
115+
116+
| `HANDOVER.adoc`
117+
| Full intended repo layout, naming conventions, and implementation brief for `seamctl` and `seamstressd`
118+
119+
| `ROADMAP.adoc`
120+
| Milestone plan: v0.1.0 (seamctl validate), v0.2.0 (dependency graph), v1.0.0 (orchestration)
121+
122+
| `Justfile`
123+
| Build recipes: `validate`, `report`, `test`, `panic`
124+
125+
| `.github/workflows/`
126+
| RSR-standard CI: CodeQL, Hypatia, Scorecard, quality, mirror workflows
127+
128+
| `.machine_readable/6a2/`
129+
| A2ML machine-readable artefacts (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK)
20130
|===
21131

22132
== Questions?
23133

24-
Open an issue or reach out directly — happy to explain anything in more detail.
134+
Open an issue or reach out to Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>.

0 commit comments

Comments
 (0)