# Human and Agent Interfaces

The human site, Markdown twins, llms.txt, API, MCP, CLI, and cross-interface identity contract.

**Lens:** `skeptical` — Experimental identifier reserved for stronger support thresholds; currently uses the shared inventory.

**Lens status:** Experimental manifest. Current lens policies preserve the same included-object inventory; the label does not yet indicate a materially differentiated editorial result.

## Included objects

### Agent Task

name: Agent task proposal description: Coordinate a proposed task before an immutable contract is accepted title: "[task] " labels: [] body: - type: markdown attributes: value: | Issues coordinate work but do not create canonical task authority. Accepted work requires a validated immutable task contract in `tasks/contr

- Kind: `automation`
- Source path: `.github/ISSUE_TEMPLATE/agent-task.yml`
- Object ID: `em:automation:sha256:8e14326345d750b9323130bf0d0afb007e19d68e0e9bf42eacb88fea9794cd9e`
- Content digest: `7305aa9280554ddbd3a31810406fb2114d807d8dffc86c7c0264673b3faa80eb`

### Pull Request Template

- Task contract: - Candidate SHA: - Accepted base SHA: - Change class: - Allowed paths: - Protected or normative paths touched:

- Kind: `automation`
- Source path: `.github/pull_request_template.md`
- Object ID: `em:automation:sha256:d4da60e0a9ecc647978b3d750b16f600a5a993da7903b9658748e9104a4689cc`
- Content digest: `58f0722cc9900ad92a5c17594e3783848dca35062891b26421d4ee11a4c50530`

### Ci

name: validate

- Kind: `automation`
- Source path: `.github/workflows/ci.yml`
- Object ID: `em:automation:sha256:003e8a8955e3d7c9229ce73f44aeec0148b2ced01eec9aaf10f5ca6b8eb578d9`
- Content digest: `3e2757acd451de04cdf7985a4313ce0e3a3d949fb14e0507c868674519d72d0e`

### Container

name: publish-container

- Kind: `automation`
- Source path: `.github/workflows/container.yml`
- Object ID: `em:automation:sha256:3a90a6127614f1a6487a4ae37ab09608f1b6486e9b32716f9be2c7ed831b9e44`
- Content digest: `772d8067eac4691255f3bb2b3279093ff1e87d7bb00c2b4646e2720ee60b6598`

### Pages

name: publish-pages

- Kind: `automation`
- Source path: `.github/workflows/pages.yml`
- Object ID: `em:automation:sha256:5715a2e1c34e3fbde0b1c696674556b8b3a3c1b965e5b522769028ae3cab1dc3`
- Content digest: `c130385f859ba2f3ee3ceda5d3a192eb203a2f078fef730926a1efa6af8e684e`

### Release

name: release

- Kind: `automation`
- Source path: `.github/workflows/release.yml`
- Object ID: `em:automation:sha256:23fcd49d215a563699c42cfe25161d9c1de3adbf942038b9a142c9fe36a9f167`
- Content digest: `4546b4d89e0c67bf2337091d3ac349dfac62496dd202e25914f4de9f6b86379a`

### Epistemedia Documentation

- [Architecture](architecture.md) - [Human and agent interface contract](interfaces.md) - [Autonomous governance](governance.md) - [API, MCP, and CLI](api-mcp-cli.md) - [Public API and MCP deployment contract](api-mcp-deployment.md) - [Agent operations](agent-ops/README.md) - [Launch and engagement](launch.md) - [Brand

- Kind: `documentation`
- Source path: `docs/README.md`
- Object ID: `em:documentation:sha256:bd212900b0fa2ac9875b008737d8e50dfe0118c4669bb8df1f70c0a2042e3a3f`
- Content digest: `cc8da037d479a385a470f4cf3737ec11f959434cc82afc516b92c8f9aaff4b7a`

### Agent Operations

This directory contains repeatable operating recipes. `AGENTS.md` remains the root authority contract.

- Kind: `documentation`
- Source path: `docs/agent-ops/README.md`
- Object ID: `em:documentation:sha256:c33dcbb04b7907672ac2aeb8b070ccdcaa3759dfd5e9feb6bbedd4c848d33ba6`
- Content digest: `57865da7b5d622610d327ddf0ade713e5cd18b29c5bc88e0d34acbfb5b1cc778`

### Contributor Agent Recipe

1. Orient: `make orient`. 2. Select: `python -m epistemedia repo next`. 3. Read the root contract, selected task contract, execution plan, scoped authority, schemas, policies, and tests. 4. Claim through an append-only proposal. 5. Work in one bounded branch and preserve negative results. 6. Rebuild all derived surface

- Kind: `documentation`
- Source path: `docs/agent-ops/contributor.md`
- Object ID: `em:documentation:sha256:477c27b7a79e2bd2eadee636d8576be10f0be62fcf9d3e7129de210f820501a6`
- Content digest: `200449654805e3a1a6e1757550e7355b71486f32f5a8bdce5239f0c7293ba4bb`

### API, MCP, and CLI

All integrations read the same disclosure-safe public catalog. Preserve the returned `catalog_id`, `frontier`, `commit`, `compiler`, policy IDs, object IDs, and content digests when storing or citing results.

- Kind: `documentation`
- Source path: `docs/api-mcp-cli.md`
- Object ID: `em:documentation:sha256:b4c2e37dc7017b9d4d3362be9b82fa11ee3ab7cea9b58c3b8a1ae9b0937dcee9`
- Content digest: `db414d3bd564bf608cbcc71d16d890c5256ed879b05ee3da4f047a8e3ee149b2`

### Public API and MCP deployment contract

The API and MCP gateway is a read-only projection service. It receives an accepted repository snapshot and exposes no GitHub, contribution, deployment, package-publishing, signing, or arbitrary network-fetch authority.

- Kind: `documentation`
- Source path: `docs/api-mcp-deployment.md`
- Object ID: `em:documentation:sha256:30fe42f129cc7f12b02b2c5aa17d1c05b8fd2a7a8deebf5208ab79c70c0bcfb4`
- Content digest: `8f96dba2e401d83cd5f25c28b0dc7d8ce3413ce4a702b8a2192b3c1824ec4d08`

### Epistemedia Architecture

Epistemedia is not an autonomous wiki whose canonical object is a page. Its canonical substrate is an append-only, provenance-preserving epistemic history. Pages and agent responses are reproducible projections over that history.

- Kind: `documentation`
- Source path: `docs/architecture.md`
- Object ID: `em:documentation:sha256:e692c6fd478d9d233f49d97573d028c76cf490d5cd6dc722c8827b1072128ae1`
- Content digest: `e98789193cda4246aeb9738f82adafc21424d45cbdf51678c00e7681b821437f`

### Brand Architecture

**Knowledge that can show its work.**

- Kind: `documentation`
- Source path: `docs/brand.md`
- Object ID: `em:documentation:sha256:41cf4e33a19c62d8f32cf4c763f4d9299261a1a6bedcd4d28d15e664636d6764`
- Content digest: `b27c9de7ba02d52bdca9f0aae5b20ebaec307e265bc6a7664821448ae45412d7`

### Validation workflow

Epistemedia's contribution CI is defined in `.github/workflows/ci.yml` and appears in GitHub Actions as **Validate**.

- Kind: `documentation`
- Source path: `docs/ci-verification.md`
- Object ID: `em:documentation:sha256:7d40369d2fffe5da6c71035371c870fb74f1a75e7710b6f9bab3b97d4c1dbfd5`
- Content digest: `32d80c474aaf57128d7c2450080f8eb562f3e8786c8211edeff1f864734c6be0`

### Forensic-editorial design system

Status: implemented public-shell convention for the truthful bootstrap corpus.

- Kind: `documentation`
- Source path: `docs/design-system.md`
- Object ID: `em:documentation:sha256:9509af845b0db5e3b5a550086425036962d848bf62b0c07624dc1161a9d2ba16`
- Content digest: `3b74257b8a496eb753597a6e2add577ff6cb6ab11b9c6ce557b66cb9cfa134c5`

### Reversible claim dossiers

Status: alpha application contract for the first vertical slice.

- Kind: `documentation`
- Source path: `docs/dossiers.md`
- Object ID: `em:documentation:sha256:e8cb4661b1e0468aef0c8e5b1be979b7b9cfdb5354fb31bbb1b9895d38b21b94`
- Content digest: `fb1112ed5c0418bdb78e02ffa30dacc44d2d7a0b3f6629694dec7f25bb58642d`

### Autonomous Governance

Epistemedia governance controls procedure, authority, admission, resources, disclosure, and interoperability. It does not vote propositions into universal truth.

- Kind: `documentation`
- Source path: `docs/governance.md`
- Object ID: `em:documentation:sha256:f4b7f1ab01b96177383f211aef554aff3ed69f9fb56dbc09fe2a2fc1886eb53a`
- Content digest: `2b2e73ec9cad599e976a35c3c31479d47adee72e341f9a854f0e484787dabaaa`

### Human and Agent Interface Contract

Epistemedia does not maintain separate editorial truths for people, API clients, MCP agents, and local tools. Each interface adapts one disclosure-safe catalog and projection manifest.

- Kind: `documentation`
- Source path: `docs/interfaces.md`
- Object ID: `em:documentation:sha256:5600741764a7b3f15581645b442c3694562be191230e0acb8104f74c8c9694a2`
- Content digest: `29d1eddb3792fa92efb04fbb6a17da89ba0e58fa79233f769fe435c0fe71478d`

### Launching and Engaging with Epistemedia

Start at the human site and choose a topic. A topic page is a reproducible projection, not an anonymously edited canonical article. Inspect its realm, frontier, policy, source objects, and manifest. The current experimental lens routes preserve the same included-object inventory, so do not interpret their different lab

- Kind: `documentation`
- Source path: `docs/launch.md`
- Object ID: `em:documentation:sha256:b23c428f86bc0df721e1898544cd3ef389754eb1ffde0a6e602e11d677198a7b`
- Content digest: `83ddecd2336cc2e1fad1f49ec69cb59ef26d2d07eb64b9c5ef4316fadd7f7b57`

### Pre-public owner handoff

> **Archived bootstrap handoff.** The repository-publication and protected-contribution steps below are complete. The default-hostname Pages bootstrap is also live. Use [`ops/activation/2026-08-22-pages-bootstrap.md`](../ops/activation/2026-08-22-pages-bootstrap.md) for current evidence and remaining owner boundaries. 

- Kind: `documentation`
- Source path: `docs/pre-public-owner-handoff.md`
- Object ID: `em:documentation:sha256:859e311841076405f0ed54de7e344977e19081494c06c5bde44fb4877fb1d7ad`
- Content digest: `6c55e03eca8ff7f0a58cbdd71c707de6bb2c52dccc72f967d2c5059fed2a46e9`

### Product Direction: How We Know

Status: owner-directed product brief, 2026-08-21.

- Kind: `documentation`
- Source path: `docs/product-direction.md`
- Object ID: `em:documentation:sha256:54695a939fb994e6ad1a5567333556ccdb43ad09a154514c13b2d49f876331ab`
- Content digest: `4a9a4771ce01859bfcfe075c8d9cc6c69995f02a56b66cfa96330d087d19c1d6`

### Epistemedia Roadmap

Compile the repository’s own architecture, governance, tasks, code, tests, and releases through the same public catalog used by every interface. Establish deterministic identity, disclosure safety, and agent-native operation.

- Kind: `documentation`
- Source path: `docs/roadmap.md`
- Object ID: `em:documentation:sha256:2f1a4a7ef2d8194d184f06a300251ba055541be0029e1ca0ddef5a299063d4c5`
- Content digest: `bcb6525b2343b8dd203b3a89fccdae5c5330d12313d061e31f03eac88a4ca8d4`

### Init

"""Epistemedia: knowledge that can show its work."""

- Kind: `implementation`
- Source path: `src/epistemedia/__init__.py`
- Object ID: `em:implementation:sha256:880fd165080ee9d859226edd48a75bf50ac03a153f1c48598f571b431f82ab03`
- Content digest: `15fa2c13924de865c6f9292e81f2960f35fcf5f4c448ed20694146c3144ee586`

### Main

from .cli import main

- Kind: `implementation`
- Source path: `src/epistemedia/__main__.py`
- Object ID: `em:implementation:sha256:dd65d0d3cec82a14c2a6f7e1ee38beeaae75a489455713f72c8d66ff241b4252`
- Content digest: `935a1c1166b0c1ea35a82256345000bf2c73ded718d77773bc27a71ecce28f7d`

### Check

"""One local and CI validation contract for accepted repository candidates."""

- Kind: `implementation`
- Source path: `src/epistemedia/check.py`
- Object ID: `em:implementation:sha256:0a219a04d2f463b59beb167c74f24f4822e9145e47f7bef517412eea1d016744`
- Content digest: `ed730858f301bada95de37bbd48ed60402c264e7df7b34f4ce677f478cebd583`

### Cli

from __future__ import annotations

- Kind: `implementation`
- Source path: `src/epistemedia/cli.py`
- Object ID: `em:implementation:sha256:d141781be5a19bc729a16e99a7fa5a447acf801ae8df474ea3895ce0fec49569`
- Content digest: `fbac8a9830034e606bd40cf71ea69932100759367dd5aa9cf8d4ee3ff036c8a1`

### Init

"""Stable package facade for the Epistemedia core.

- Kind: `implementation`
- Source path: `src/epistemedia/core/__init__.py`
- Object ID: `em:implementation:sha256:f28fb4711ae59929702bcf8d05ec7b19faba416ec0e6c0d2ca12c86e0a50d389`
- Content digest: `87a6e166541f8d7fb06b792162ed9edbf2e2d22b82c901942f8aea7054abc9d1`

### Core

from __future__ import annotations

- Kind: `implementation`
- Source path: `src/epistemedia/core.py`
- Object ID: `em:implementation:sha256:c02a01e7cb1420a6b9ac7a5506f2c8d0ddce0728947f1c5aa9fe59eaf2dccf08`
- Content digest: `5915cfa632274bc0ac43cf8fed768b3f2a0d1564be8e466561b61c34c7d8498e`

### Dossier

"""Reversible application-level claim dossiers for the first vertical slice.

- Kind: `implementation`
- Source path: `src/epistemedia/dossier.py`
- Object ID: `em:implementation:sha256:8d45a3fa49ff198e1ba85ab61483c1af947d1a6eaa4a9ea5f1d7bc698d85e6a7`
- Content digest: `3133a9b74cccf55e33469e2d3859e63b51236cc71bfa07554aba61e76406207e`

### In an editable checkout this is the repository root. In an installed wheel it is merely a

"""Lazy compatibility package for the ASGI gateway.

- Kind: `implementation`
- Source path: `src/epistemedia/server/__init__.py`
- Object ID: `em:implementation:sha256:85f4e28a6a876c082c7b7e6201529b2e9d9c3256e0ae02c03306ee3e47602b9d`
- Content digest: `0161a354ed8def0bb0f5db6f9196b6960b7946600a51d94afff0364555209068`

### Server

from __future__ import annotations

- Kind: `implementation`
- Source path: `src/epistemedia/server.py`
- Object ID: `em:implementation:sha256:e386834b9d71cc46e3c4d566efe24c4da0f0fc8b5e8dff607d2ef35291a8702d`
- Content digest: `aff71387dc313b0654475dfa618013f7419d15dbc37b295550458508d91bb43e`

### Test Container Contract

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_container_contract.py`
- Object ID: `em:test:sha256:a8a23e707d8452593eaafba1e5d9648960640c4fbab7d22663d566e589b05346`
- Content digest: `51bb66a641d0036abbfe7e6fa7be9314c58f649a238becdf93db14345bb57308`

### Test Dossiers

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_dossiers.py`
- Object ID: `em:test:sha256:e898e1403974a237db794e9bb8fa1ef79edc915faef3214236cd0840db67c376`
- Content digest: `93544a5250ce8b7f84ee40dae960b9d6396823424e3ce28a79ea559cff9f9a2e`

### Test Installed Package

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_installed_package.py`
- Object ID: `em:test:sha256:2e4bcd563729997b7d2d256e2f5e2dfbbbddb7c750504030d725d58f03fe8980`
- Content digest: `5b24dbad2f3718e8212f722a1ad5c7fd9a544200d34747e666d185cec16b20e4`

### Test Interfaces

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_interfaces.py`
- Object ID: `em:test:sha256:cea36ce8b19762f7269bcc51bf823df002e68cbeeb98dfd6bcb2949c1c6c797c`
- Content digest: `11adf5f3f997386f04cbf5dc18cd1c4d7539aa9dcec500419be1f49000e0034b`

### Test License

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_license.py`
- Object ID: `em:test:sha256:b019d0a8d15fb08b000b90c4b84d09fe2c76d8c8973aaa073917b5ad44f46a68`
- Content digest: `ac06ef40683e4b97b3e41163c668a0564d701caefb033d05bc4cf92b12bf778f`

### Test Workflow Security

from __future__ import annotations

- Kind: `test`
- Source path: `tests/test_workflow_security.py`
- Object ID: `em:test:sha256:8175d09dc7cc53662b10cc3ce7aaf372fdc996994419a19d9b151e3b48cc7da8`
- Content digest: `42a76df5d5e5c9408d5e3f4d270fce7ea887f47d03cc09e0b9f9339e4322d179`

## Projection manifest

- Projection: `em:projection:sha256:0641927d9bb7d6ac9cffc3068a25bae7b251b34f1b18a7c6a23d625ad6ebe555`
- Catalog: `em:catalog:sha256:0878f30018f4a18609fc53525c437f184b39cad2fe5fc2f58866dbe843a4c22f`
- Evidence frontier: `em:frontier:sha256:768657ee40816484a512ba7a4d41f4a81e914d61ee31f14ea21fe0264e5625ad`
- Accepted commit: `081419ff0e4d28005320dc1ae7ad068b98135959`
- Epistemic policy: `commons-balanced-v0.1`
- Disclosure policy: `public-noninterference-v0.1`
- Compiler: `epistemedia/0.2.0`
