All checks were successful
synthetic / suite (push) Successful in 1m2s
Assistant: grok Assistant-Session: 01a1531b-6698-7732-8587-f28ea604bcdf
53 lines
4.8 KiB
Markdown
53 lines
4.8 KiB
Markdown
# 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`.
|
||
|
||
An entity source ref is checked even when another source on that entity is licensed. Adding `src:does-not-exist` beside the licensed source on `urn:ce:systems-thinking:concept:feedback` records `unresolved-reference`, lists the entity under incomplete provenance, and matches `graph_errors`. The same extra ref on a relation was already reported.
|
||
|
||
## 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`.
|