Family status
The members of the struct family each carry adversarial legs whose verdicts live
in committed files, reconciled on every push. The family-status@1 contract
makes those files readable across the family, without a server, without a
dashboard product, and without any trust beyond “the committing repo’s own CI ran
its own battery”:
- every member serves a machine-readable status file at the fixed path
/status.jsonon its site; - that file is generated, never hand-edited, by the member’s own web build, straight from committed inputs;
- every member’s status page reads the others’ files and renders their numbers (or their absence) honestly.
Humans read /status; agents and machines read /status.json. Both get the
same numbers, because both read the same generated file.
gamestruct’s legs
gamestruct is new to the family, so it serves the dialect from the two receipts it actually has:
| leg | input | meaning |
|---|---|---|
selfcheck |
the bridgeworks’ own runSelfChecks() (the same 17 checks gamestruct check runs) |
the tree, both lanes, both bindings, and the invariant that the SAME handle drives both |
battery |
labs/battery.json, the committed contract |
the expected shape of the self-check battery - a check that silently disappears reads RED, never a smaller green |
The emitter runs the self-checks at web-build time and reconciles the live count
against the committed contract. A verdict is PASS only when the live battery
matches the committed shape and every check passes; anything else is RED.
The dialect: family-status@1
One JSON object per repo. schema is 1; contract is the string
family-status@1 - a reader that sees either field missing or renamed refuses
and shows “not serving the dialect”, never a guessed row.
| field | shape | meaning |
|---|---|---|
schema |
1 |
the dialect’s schema pin, additive-first |
contract |
"family-status@1" |
the contract name a reader matches |
repo |
string | the source repo |
site |
string | this member’s own status page URL |
docs |
string | the docs status page URL |
asOf |
ISO date | when the emitter ran (the build date) |
legs |
array | {leg, verdict, cases, counts, ledger} per leg |
packs |
array | the member’s packstruct@1 packs, if any |
gamestruct ships no packs yet, so packs is empty - honestly, not omitted.