# EM-0037 — Human-readable cases and agent research kit

- Object ID: `em:documentation:sha256:ed8994f47f1274d52821fffac9e350fa2ffb5b6763defac24429b34922c55308`
- Kind: `documentation`
- Repository path: [`docs/execution-plans/EM-0037.md`](https://github.com/yoheinakajima/epistemedia/blob/f92846570180dfa4511263f8ba98ecd18f7772c9/docs/execution-plans/EM-0037.md)
- Content digest: `c7232509e7c45e274e59189db2d7eb12a5298c6d5751ffdaa8b63307ef796de9`

**Also filed under:** [Disclosure and Public Projection](https://epistemedia.org/topics/disclosure/), [Epistemedia](https://epistemedia.org/topics/epistemedia/), [Epistemic Mesh Protocol](https://epistemedia.org/topics/epistemic-mesh/), [Sovereign Realm Federation](https://epistemedia.org/topics/federation/), [Autonomous Governance](https://epistemedia.org/topics/governance/), [Knowledge Objects](https://epistemedia.org/topics/knowledge-objects/), [Human and Agent Interfaces](https://epistemedia.org/topics/public-interfaces/), [Releases and Reproducibility](https://epistemedia.org/topics/releases/), [Research Program](https://epistemedia.org/topics/research-program/), [Security and Adversarial Robustness](https://epistemedia.org/topics/security/)

## Source content

# EM-0037 — Human-readable cases and agent research kit

## Objective

Polish the human projection of Cases 002–004 without changing accepted evidence meaning, and make
the same bounded research method recoverable by a cold-start coding agent through static files,
local REST, read-only MCP, and CLI.

## Implementation

1. Add projection-only editorial framing for false independence, missing comparison class, and
   scope inflation: familiar claim, why it matters, finding, practical reading, and a three-step
   evidence map before technical ledgers.
2. Normalize every Case 002 human ledger member to a typed identity, show count-card ledgers first,
   and place additional audit groups behind one native disclosure.
3. Collapse repeated human-display source spans by exact accepted span ID and digest while
   retaining all occurrences and relations in JSON, Markdown, calculations, and machine ledgers.
4. Publish one public research protocol, per-case briefs, a draft proposal template, fail-closed
   validation, local CLI commands, and read-only MCP/REST discovery.
5. State the queue boundary precisely: EM-0037 does not submit or store bundles; EM-0038 separately
   governs a future authenticated coordination queue with zero automatic evidential credit.

## Preservation boundary

All accepted dossier, review-receipt, and selection-manifest inputs remain byte-identical. Case 001
is unchanged except for shared discovery of its research brief. No accepted count, evaluation,
relation, uncertainty, license, calculation, or review conclusion changes.

## Validation

- Recompute every case count from accepted typed members and reject missing human ledger identity.
- Prove repeated-span collapse affects HTML display only.
- Exercise cold-start static/REST/MCP/CLI parity and draft/ready validation behavior.
- Reject traversal, local/private URLs, secret-shaped data, oversized bundles, unsupported fields,
  duplicate identities, missing source/span closure, and admission-like top-level status.
- Run Ruff, focused tests, full deterministic `make check`, desktop/mobile no-JavaScript browser QA,
  and fresh-clone exact-head independent review before protected merge.

## Deployment boundary

This task does not deploy Pages or a hosted API/MCP, activate credentials, accept a proposal, or
implement the EM-0038 queue. Live-route and provider read-back require a separately authorized
accepted deployment.

## Author validation

- Focused Case 001–004, interface, and agent-kit suite: 84 tests passed.
- New research-kit suite: 27 tests passed, including adversarial bundles and static/REST/MCP/CLI
  parity.
- Full `make check PYTHON=.venv/bin/python`: 134 tests passed; public audit clean; independent
  deterministic rebuild identical; tracked source state unchanged.
- Browser QA at 1280×720 and 390×844: one H1, zero scripts, no horizontal page overflow, compact
  case hierarchy, collapsed technical disclosures, and visible 3px focus outline. Mouse/click
  activation of native disclosures passed. The browser driver focused a native summary but did not
  dispatch Enter, so keystroke activation remains an explicit post-merge/live-readback item rather
  than an inferred pass.
