Skip to content

State what Modore is for, name its public surface, and freeze the Zoint seam - #82

Merged
heznpc merged 1 commit into
mainfrom
feat/scope-vocabulary-contract
Aug 21, 2026
Merged

State what Modore is for, name its public surface, and freeze the Zoint seam#82
heznpc merged 1 commit into
mainfrom
feat/scope-vocabulary-contract

Conversation

@heznpc

@heznpc heznpc commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Three moves that had fallen a generation behind the code, done as one
cleanup so the product sentence, the public vocabulary, and the external
contract stop disagreeing with what the repository actually does.

1. Scope

The README led with "what your AI agents left behind" and gave the
generic PC diagnostic equal billing. Neither survived moraine: an
orphaned trust root from a removed banking plugin and an orphaned
worktree from a removed agent workspace are the same problem. The head
now states the ontology — durable local state that outlives the work,
tool, or software that created it
— with the AI-builder Mac as
audience, not filter. A Scope section fixes the in/out rule; the
diagnostic surface is maintained, not growing.

2. Public MCP vocabulary

Renamed in one pass while consumers number zero, no aliases:

was is
scree_report agent_state_report
friction_scan operator_friction_report
hf_orphans model_residue_report
file_access agent_file_access

mcp_hygiene, system_scan_summary, uninstall_residue_report
unchanged. Internal filenames and handlers keep their codenames — the
split between what a client calls and what a maintainer greps is the
point.

3. The seam, frozen

bind / bind-all output is now modore.agent-state-snapshot v1:
schema + schemaVersion + generatedAt on the existing shape,
contract in docs/agent-state-snapshot-v1.md with three semantic limits
stated as part of it (complete = conclusively classified, fingerprint =
same-or-changed check, snapshot ≠ destructive authorization). Reference
fixture generated from a real run and pinned; the Swift consumer refuses
an unknown schemaVersion instead of best-effort parsing.

Zoint's consumer half landed separately (zoint@d9e3f2b): fixture copy,
byte-for-byte evidence preservation, version refusal, and
emptinessIsAFinding as the only sanctioned reading of an empty list.

Verification

Python 604 · MothballCore 120 · Modore strict build clean · Zoint 57.

Three moves that had fallen a generation behind the code.

The README led with "what your AI agents left behind" and gave the
generic PC diagnostic equal billing. Neither sentence survived moraine:
an orphaned trust root from a removed banking plugin and an orphaned
worktree from a removed agent workspace are the same problem, and "AI"
was never the boundary. The head now states the ontology -- durable
local state that outlives the work, tool, or software that created it --
with "built for Macs shaped by AI-assisted development" as the audience
line beneath it, and a Scope section fixes the rule every new capability
is judged against. The diagnostic surface is declared maintained, not
growing.

The MCP vocabulary leaked implementation history: scree is a codename,
hf_ is a vendor abbreviation, and a client calls these by string.
Renamed in one pass while the consumer count is zero and no alias left
behind -- an alias is a promise to support the old name forever, made to
nobody:

  scree_report  -> agent_state_report
  friction_scan -> operator_friction_report
  hf_orphans    -> model_residue_report
  file_access   -> agent_file_access

mcp_hygiene and system_scan_summary already say what they do, and
uninstall_residue_report landed under its final name. Internal
filenames and handler names keep their codenames; the split between
what a client calls and what a maintainer greps is the point.

The bind output becomes the frozen seam: schema
"modore.agent-state-snapshot", schemaVersion 1, generatedAt, with the
contract documented and three semantic limits stated as part of it --
complete means conclusively classified rather than totally observed,
the fingerprint is a same-or-changed check rather than provenance, and
a snapshot is historical evidence that never authorizes destruction.
The reference fixture is generated from a real run and pinned; the
Swift consumer refuses a schemaVersion it does not know instead of
best-effort parsing it, which is the contract's own versioning rule
enforced where misreading would happen.
@heznpc
heznpc merged commit ee97b30 into main Aug 21, 2026
8 checks passed
@heznpc
heznpc deleted the feat/scope-vocabulary-contract branch August 21, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant