Repository object · documentation
EM-0028 execution plan
Status: completed. PR #48 passed exact-head independent review, merged through the protected squash path, and its accepted main commit passed canonical-domain deployment and public read-back.
- Source path
docs/execution-plans/EM-0028.md- Media type
text/markdown- Object ID
em:documentation:sha256:b7c00a2b53e232bc636f07a22e71483a289b8771c2c7063ceb25a55a1ba327a2- Content digest
9310ca0c8600aa31d717232187870f9a92b524e1ed2c6cfc86e24e40694025cc
Source content
EM-0028 execution plan
Status: completed. PR #48 passed exact-head independent review, merged through the protected
squash path, and its accepted main commit passed canonical-domain deployment and public read-back.
Objective
Turn each bootstrap topic projection into a compact human index without weakening its forensic
identity. Present public objects as grouped editorial cards, keep object identity inspectable at a
smaller typographic scale, and derive only two truthful catalog relations: other topic memberships
and exact repository-object references found in the accepted source text.
Accepted base and authority
- accepted base:
e9ad62b18f21594258643694c55709f78b4f9a50; - immutable task:
tasks/contracts/EM-0028.json; - implementation authority:
src/epistemedia/core.py,tests/test_interfaces.py, this execution - forbidden state includes research, catalog source, policies, schemas, workflows, governance
plan, docs/design-system.md, activation records, and append-only run receipts;
events, README, and the featured-dossier renderer.
Change surface
1. Extend the shared topic projection with deterministic canonical-object, Markdown-twin,
accepted-source, topic-membership, and source-reference links.
2. Resolve Markdown references against the source object's repository directory. Admit a
navigation edge only when its normalized path names an exact disclosure-safe catalog object.
3. Render grouped, responsive topic cards with cleaned summaries, explicit relation labels, and a
native technical-identity disclosure for path, media type, object ID, and content digest.
4. Add topic memberships and an exact accepted-source link to canonical object pages.
5. Emit the same projection as static JSON and verify parity with local REST, MCP resource/tool,
and CLI output.
Relation boundary
also filed undermeans only that the accepted topic include rules select the same object;references in sourcemeans only that the accepted Markdown text contains a repository-relative- neither relation asserts similarity, evidentiary support, agreement, relevance, or independence;
- external, fragment-only, root-absolute, escaping traversal, missing, non-public, duplicate, and
link resolving to another exact public object;
self targets do not become object relations.
Verification
- adversarial resolver fixtures for relative paths, safe parent navigation, escaping traversal,
- topic and object HTML hierarchy, accessible native disclosure, visible focus, overflow-safe
- deterministic relation equality across static JSON, REST, MCP resource, MCP tool, and CLI;
- exact accepted Case 001 research, dossier manifest, and review receipt SHA-256 comparison;
- targeted Ruff and interface tests, then full
make check PYTHON=.venv/bin/python; - local no-JavaScript browser inspection at
1440 × 900and390 × 844; - exact changed-path comparison before draft PR creation.
fragments, external schemes, root-absolute paths, duplicates, missing objects, private targets,
and long identities;
identifiers, summary sanitization, and internal-link closure;
Accepted Case 001 identities to preserve
- feature manifest:
5c96dead036b527793ba5a0de59bf7316efdfeb591470d4a23e5bf979f3b9288; - candidate dossier:
7003413e286e4d310f81441db33f4a467ba2eb3e08f41ddfa3cef5abb34707ca; - independent review receipt:
503d16396b25b1c22d7fc10ac6fb7db2e530e6ce348d63fa8b639db5a5288f0a.
Local completion evidence
- The compiled Epistemedia topic index contains 27 working-tree public objects grouped across
tests/test_interfaces.pypasses all 32 interface tests, including adversarial resolution,- targeted Ruff
E9,F,I,git diff --check, disclosure audit, and the full 82-test deterministic - Browser inspection at
1440 × 900and390 × 844confirms one H1, zero scripts, zero - Object-page inspection confirms a cleaned prose summary, 11.52px machine facts at the mobile
- Case 001 candidate dossier, feature manifest, independent review receipt, source spans, and
three actual kinds. Its typed relation inventory contains 220 other-topic memberships and 15
unique exact public-object references after duplicate and unsafe-target rejection.
internal-link closure, canonical object links, HTML/Markdown/lens parity, and REST/MCP/CLI
projection equality.
make check PYTHON=.venv/bin/python pass. The independent comparison build matches and the
source tree remains unchanged by validation.
horizontal overflow, compact utility headings, smaller machine metadata, and visible 3px focus.
Expanded relation and technical disclosures preserve the page width and wrap long identities.
The browser driver focused native summary controls but did not dispatch their Enter default
action; click expansion, native details/summary markup, keyboard focusability, and focus
styling were verified. This is recorded as a driver limitation, not an inferred activation pass.
reference viewport, exact accepted-source navigation, and all catalog-derived topic memberships.
research inputs remain byte-identical to their accepted hashes. No research, catalog source,
policy, schema, workflow, governance event, README, or featured-dossier renderer was changed.
The final local run is recorded append-only as 20260823T034945Z-em0028-final. Publication and
live-site claims remain prohibited until protected merge and the separately authorized Pages
deployment complete provider read-back.
Accepted completion evidence
- independently reviewed candidate:
444b4af56a901778afe6a79f96b6269b827d1c58, tree - protected squash commit:
a4ccdb9e4fc2e62018c77f6a6560666f6a69f83f, with the same tree; - PR Validate run
32616552460, job97138142041, conclusionsuccess; - resulting-main Validate run
32617161851, job97139622644, conclusionsuccess; - one authorized custom-domain Pages run
32617262450, build job97139873721, deploy job - successful GitHub deployment
6044260511, status17181336969, provider URL - live release manifest
- public topic HTML, Markdown, and JSON plus representative object HTML and Markdown returned the
c3e416456d2f3541c6ada1ddbe938a32cf49ccca;
97139967276, conclusion success;
https://epistemedia.org/;
em:release-manifest:sha256:c69ca3eacc2718911a58f68a6d5cc4f2c00d6ffa144046cf9653c90efb6cfc69,
catalog em:catalog:sha256:dfb7ef6b75d7024142ff327622e44f8b0204471734bb1661b7054e21830c8233,
and frontier em:frontier:sha256:c37a16901d41c94ef8c10dd3dc617facd51dd6f8d01dfcfd181044ae3b110fe0;
intended content types and exact accepted commit; mobile and desktop read-back retained one H1,
no JavaScript, no horizontal overflow, compact cards, subordinate machine identity, and working
catalog-derived navigation.
The provider and route details are recorded in
ops/activation/2026-08-22-custom-domain.md. Run receipt
20260823T041147Z-em0028-pages records the external completion checkpoint. The browser driver
again focused native summary controls but did not dispatch their Enter default action; native
markup, click expansion, keyboard focusability, and visible focus styling passed, so synthetic
keystroke activation remains the only bounded tooling gap. No hosted API/MCP, DNS, release,
package, credential, or Case 002 claim was activated by this task.
Build receipt
Reproduce this projection
- Catalog
em:catalog:sha256:9bfc972213cba2cde167386103dc2c011ee74639fb7f0794c54120fbbdef1a5d- Frontier
em:frontier:sha256:f33be3eae4c75232d56750ef9a1aa79d96274ece3417d65a75c1391bf61a81bf- Accepted commit
f92846570180dfa4511263f8ba98ecd18f7772c9- Epistemic policy
commons-balanced-v0.1- Disclosure policy
public-noninterference-v0.1- Compiler
epistemedia/0.2.0