content-explorer/workplans/evidence/CONTENT-WP-0005-ImplementationNotes.md
tegwick f43edc1edc
Some checks failed
synthetic / suite (push) Has been cancelled
Add a synthetic quality suite and upstream parity record.
Assistant: grok
Assistant-Session: 01a1531b-6698-7732-8587-f28ea604bcdf
2026-10-19 10:38:49 +02:00

4.4 KiB
Raw Blame History

CONTENT-WP-0005 implementation notes

Date: 2026-10-19

Public checks stay on the two synthetic dataspaces, systems-thinking and software-architecture. The suite does not fetch the OnCo corpus.

T01 and T07 — one suite, both journeys

.forgejo/workflows/synthetic.yaml checks out the repo, installs requirements.txt and ui/ dependencies, and runs sh scripts/ci-synthetic.sh. That script runs fixture validation, python3 -m unittest discover -s tests -p 'test_*.py', the UI boundary and provenance checks, scripts/quality_report.py, then npm test and npm run typecheck in ui/.

ui/components/journeys.test.tsx drives the shipped browser and detail markup for both dataspaces. For the first concept that has a relation and a source it searches that title, opens the record, checks the source title and license, follows the neighbour link, and opens GraphExplorer with that entity as focus. A second test focuses the search field, a result link, a relation link, and the way back.

T02 — keyboard, viewports, screenshots, lab vitals

Headless Chromium on npm run dev at http://127.0.0.1:3400 walked the same journeys at 1280×800 and 390×844. Focus reached search, a result, the record, a relation link, and the return link on both dataspaces. Page errors were 0. Captured under /tmp/grok-goal-60054ed6e434/implementer/:

  • a11y.txt
  • wide.png (1280×971, 102155 bytes) and narrow.png (390×1411, 99962 bytes)
  • screenshot-compare.txt: the pixels differ; the wide view keeps search and the Search button on one row; the narrow view stacks search, tags, and the table. OnCo pixel equality was not measured.
  • vitals.txt: ttfbMs 445.1, domContentLoadedMs 664.7, loadMs 877.2, fcpMs 828, lcpMs 828. These are navigation-timing numbers from the last wide page, the software-architecture concept index.

T03 and T08 — quality report

content_explorer.quality.quality_report reads a snapshot, a manifest, and an optional ingest report. It always emits every failure class, including zeros: rights, missing-license, dangling-reference, duplicate-identity, unresolved-reference, missing-relation-label, unknown-kind, and stale. It also reports provenance complete and incomplete ids, stale ids, unresolved references, and source counts with the licenses actually present.

scripts/quality_report.py prints that JSON for examples/dataspaces and exits non-zero when any class count is above zero or provenance is incomplete. On 2026-10-19 both examples are complete and every class count is 0. Their sources are CC0-1.0. A test that sets one source license to MIT sees MIT in sources.licenses.

T04 — deviations and notices

research/UXParityMatrix.md section “Disposition after CONTENT-WP-0005” lists each upstream pattern as reused, generalized, omitted, or deferred. Faceted table and deep-linked view state are reused. Landing, kind directory, detail, backlinks, sources, glossary, graph, and collections are generalized. Timelines, comparisons, medical widgets, and the OnCo mark are omitted. A static API and Ask/MCP are deferred.

scripts/check_ui_provenance.py requires THIRD_PARTY.md to contain Copyright (c) 2026 OnCo, MIT License, and pin b594d7433bf4e408b44215e25e5304696d6f840e. tests/test_ui_provenance.py calls that check.

T05 — publish rejection

publish_directory still refuses a quarantined or dangling import and does not write snapshot.json. tests/test_quality.py drives project_records and publish_directory on a missing license, a disallowed license, a dangling relation target, and a duplicate identity. Each case leaves published false, snapshot null, and a non-zero failure class on quality_report. Clearing a published source license, pointing a relation at a missing id, appending a duplicate entity, or marking an entity stale each raises the matching class above zero.

Checks

Durable tests:

  • tests/test_quality.py
  • tests/test_ui_provenance.py
  • ui/components/journeys.test.tsx
  • .forgejo/workflows/synthetic.yaml and scripts/ci-synthetic.sh

Captured on 2026-10-19 under /tmp/grok-goal-60054ed6e434/implementer/:

  • tests-1.txt and tests-2.txt: sh scripts/ci-synthetic.sh, both exit 0. Unittest ran 26 tests. Vitest ran 12 files and 34 tests, including the two journey tests.
  • ci-local.txt: the workflow’s install and suite commands.
  • fixtures.txt: python3 scripts/validate_fixtures.py and python3 scripts/check_ui_provenance.py.