docs(workplans): add IB-WP-0022 content-explorer presentation binding
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s

Plan a reusable projection of infospace sources, entities, and relations
into a content-explorer snapshot and presentation manifest, using the
Lefevre infospace as the example. Hub sync wrote the workplan ids and
refreshed the generated brief and work-record index.

Assistant: grok
Assistant-Session: 01a137af-2bea-7940-9a65-acd892344a72
This commit is contained in:
tegwick 2026-10-14 02:07:39 +02:00
parent be872bf4e0
commit f001b0c1cf
3 changed files with 373 additions and 2 deletions

View file

@ -2,12 +2,25 @@
# Custodian Brief — infospace-bench
**Domain:** communication
**Last synced:** 2026-07-03 16:42 UTC
**Last synced:** 2026-10-14 00:07 UTC
**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)*
## Active Workstreams
*(none — repo may need first-session setup)*
### Bind infospaces to content-explorer as the presentation UI
Progress: 0/5 done | workplan_id: `8b7261bb-9264-515c-948f-b6384e74fdfd`
**Open tasks:**
- · T01 — Specify the reusable projection rule `128d6123`
- · T02 — Project the Lefevre snapshot `5861057c`
- · T03 — Write the Lefevre presentation manifest `922bddc1`
- · T04 — Validate the Lefevre pair against the publication rules `f85eae30`
- · T05 — Record the reusable rule beside the example `3852fcf3`
## Inbox Hygiene
**Stale unread:** 2 message(s) older than 3 day(s) — triage at session start.
**Missing thread_id:** 2 unread message(s) lack supersession chains.
---
## MCP Orientation (when available)

136
WORK-RECORDS.md Normal file
View file

@ -0,0 +1,136 @@
# Work Records — infospace-bench
> Generated by `statehub fix-consistency` (CUST-WP-0061-T04, work-record
> stage 3). Do not edit by hand — edit the source file/block listed for
> each record and re-run fix-consistency to refresh this index. Archived
> workplans are omitted; closed decisions/intakes/engagements stay listed
> so recently-resolved work is still visible. [auto]
| Kind | ID | Status | Lane | Source |
| --- | --- | --- | --- | --- |
| workplan | IB-WP-0001 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| workplan | IB-WP-0002 | done | — | workplans/IB-WP-0002-infospace-lifecycle-baseline.md |
| workplan | IB-WP-0003 | done | — | workplans/IB-WP-0003-evaluation-and-inspection.md |
| workplan | IB-WP-0004 | done | — | workplans/IB-WP-0004-reference-infospace-pilot.md |
| workplan | IB-WP-0005 | done | — | workplans/IB-WP-0005-orthogonal-successor-architecture.md |
| workplan | IB-WP-0006 | done | — | workplans/IB-WP-0006-markitect-tool-adapter.md |
| workplan | IB-WP-0007 | completed | — | workplans/IB-WP-0007-entity-relation-model-migration.md |
| workplan | IB-WP-0008 | completed | — | workplans/IB-WP-0008-evaluation-history-metrics-parity.md |
| workplan | IB-WP-0009 | completed | — | workplans/IB-WP-0009-applied-workflow-generation-pipeline.md |
| workplan | IB-WP-0010 | completed | — | workplans/IB-WP-0010-kontextual-engine-integration-boundary.md |
| workplan | IB-WP-0011 | completed | — | workplans/IB-WP-0011-pruned-legacy-reference-pilot.md |
| workplan | IB-WP-0012 | completed | — | workplans/IB-WP-0012-replacement-readiness-cli-parity.md |
| workplan | IB-WP-0013 | completed | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| workplan | IB-WP-0014 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| workplan | IB-WP-0015 | completed | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| workplan | IB-WP-0016 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| workplan | IB-WP-0017 | completed | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| workplan | IB-WP-0018 | done | — | workplans/IB-WP-0018-adaptive-llm-routing-consumer.md |
| workplan | IB-WP-0019 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| workplan | IB-WP-0020 | finished | — | workplans/IB-WP-0020-provider-routing-cli.md |
| workplan | IB-WP-0021 | finished | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| workplan | IB-WP-0022 | ready | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |
| task | IB-WP-0001-T01 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T02 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T03 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T04 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T05 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T06 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T07 | cancel | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0001-T08 | done | — | workplans/IB-WP-0001-state-hub-and-repo-bootstrap.md |
| task | IB-WP-0002-T01 | done | — | workplans/IB-WP-0002-infospace-lifecycle-baseline.md |
| task | IB-WP-0002-T02 | done | — | workplans/IB-WP-0002-infospace-lifecycle-baseline.md |
| task | IB-WP-0002-T03 | done | — | workplans/IB-WP-0002-infospace-lifecycle-baseline.md |
| task | IB-WP-0002-T04 | done | — | workplans/IB-WP-0002-infospace-lifecycle-baseline.md |
| task | IB-WP-0003-T01 | done | — | workplans/IB-WP-0003-evaluation-and-inspection.md |
| task | IB-WP-0003-T02 | done | — | workplans/IB-WP-0003-evaluation-and-inspection.md |
| task | IB-WP-0003-T03 | done | — | workplans/IB-WP-0003-evaluation-and-inspection.md |
| task | IB-WP-0003-T04 | done | — | workplans/IB-WP-0003-evaluation-and-inspection.md |
| task | IB-WP-0004-T01 | done | — | workplans/IB-WP-0004-reference-infospace-pilot.md |
| task | IB-WP-0004-T02 | done | — | workplans/IB-WP-0004-reference-infospace-pilot.md |
| task | IB-WP-0004-T03 | done | — | workplans/IB-WP-0004-reference-infospace-pilot.md |
| task | IB-WP-0004-T04 | done | — | workplans/IB-WP-0004-reference-infospace-pilot.md |
| task | IB-WP-0005-T01 | done | — | workplans/IB-WP-0005-orthogonal-successor-architecture.md |
| task | IB-WP-0005-T02 | done | — | workplans/IB-WP-0005-orthogonal-successor-architecture.md |
| task | IB-WP-0005-T03 | done | — | workplans/IB-WP-0005-orthogonal-successor-architecture.md |
| task | IB-WP-0005-T04 | done | — | workplans/IB-WP-0005-orthogonal-successor-architecture.md |
| task | IB-WP-0006-T01 | done | — | workplans/IB-WP-0006-markitect-tool-adapter.md |
| task | IB-WP-0006-T02 | done | — | workplans/IB-WP-0006-markitect-tool-adapter.md |
| task | IB-WP-0006-T03 | done | — | workplans/IB-WP-0006-markitect-tool-adapter.md |
| task | IB-WP-0006-T04 | done | — | workplans/IB-WP-0006-markitect-tool-adapter.md |
| task | IB-WP-0007-T01 | done | — | workplans/IB-WP-0007-entity-relation-model-migration.md |
| task | IB-WP-0007-T02 | done | — | workplans/IB-WP-0007-entity-relation-model-migration.md |
| task | IB-WP-0007-T03 | done | — | workplans/IB-WP-0007-entity-relation-model-migration.md |
| task | IB-WP-0007-T04 | done | — | workplans/IB-WP-0007-entity-relation-model-migration.md |
| task | IB-WP-0008-T01 | done | — | workplans/IB-WP-0008-evaluation-history-metrics-parity.md |
| task | IB-WP-0008-T02 | done | — | workplans/IB-WP-0008-evaluation-history-metrics-parity.md |
| task | IB-WP-0008-T03 | done | — | workplans/IB-WP-0008-evaluation-history-metrics-parity.md |
| task | IB-WP-0008-T04 | done | — | workplans/IB-WP-0008-evaluation-history-metrics-parity.md |
| task | IB-WP-0009-T01 | done | — | workplans/IB-WP-0009-applied-workflow-generation-pipeline.md |
| task | IB-WP-0009-T02 | done | — | workplans/IB-WP-0009-applied-workflow-generation-pipeline.md |
| task | IB-WP-0009-T03 | done | — | workplans/IB-WP-0009-applied-workflow-generation-pipeline.md |
| task | IB-WP-0009-T04 | done | — | workplans/IB-WP-0009-applied-workflow-generation-pipeline.md |
| task | IB-WP-0010-T01 | done | — | workplans/IB-WP-0010-kontextual-engine-integration-boundary.md |
| task | IB-WP-0010-T02 | done | — | workplans/IB-WP-0010-kontextual-engine-integration-boundary.md |
| task | IB-WP-0010-T03 | done | — | workplans/IB-WP-0010-kontextual-engine-integration-boundary.md |
| task | IB-WP-0010-T04 | done | — | workplans/IB-WP-0010-kontextual-engine-integration-boundary.md |
| task | IB-WP-0011-T01 | done | — | workplans/IB-WP-0011-pruned-legacy-reference-pilot.md |
| task | IB-WP-0011-T02 | done | — | workplans/IB-WP-0011-pruned-legacy-reference-pilot.md |
| task | IB-WP-0011-T03 | done | — | workplans/IB-WP-0011-pruned-legacy-reference-pilot.md |
| task | IB-WP-0011-T04 | done | — | workplans/IB-WP-0011-pruned-legacy-reference-pilot.md |
| task | IB-WP-0012-T01 | done | — | workplans/IB-WP-0012-replacement-readiness-cli-parity.md |
| task | IB-WP-0012-T02 | done | — | workplans/IB-WP-0012-replacement-readiness-cli-parity.md |
| task | IB-WP-0012-T03 | done | — | workplans/IB-WP-0012-replacement-readiness-cli-parity.md |
| task | IB-WP-0012-T04 | done | — | workplans/IB-WP-0012-replacement-readiness-cli-parity.md |
| task | IB-WP-0013-T01 | done | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| task | IB-WP-0013-T02 | done | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| task | IB-WP-0013-T03 | done | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| task | IB-WP-0013-T04 | done | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| task | IB-WP-0013-T05 | done | — | workplans/IB-WP-0013-wealth-vsm-generation-pipeline-parity.md |
| task | IB-WP-0014-T01 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| task | IB-WP-0014-T02 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| task | IB-WP-0014-T03 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| task | IB-WP-0014-T04 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| task | IB-WP-0014-T05 | done | — | workplans/IB-WP-0014-infospace-backend-abstraction.md |
| task | IB-WP-0015-T01 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0015-T02 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0015-T03 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0015-T04 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0015-T05 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0015-T06 | done | — | workplans/IB-WP-0015-generic-source-infospace-generator-cli.md |
| task | IB-WP-0016-T01 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T02 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T03 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T04 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T05 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T06 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0016-T07 | done | — | workplans/IB-WP-0016-lefevre-ebook-infospace-readiness.md |
| task | IB-WP-0017-T01 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0017-T02 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0017-T03 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0017-T04 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0017-T05 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0017-T06 | done | — | workplans/IB-WP-0017-agentic-memory-profile-pilot.md |
| task | IB-WP-0019-T01 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T02 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T03 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T04 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T05 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T06 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0019-T07 | done | — | workplans/IB-WP-0019-budget-and-usage-registry.md |
| task | IB-WP-0020-T01 | done | — | workplans/IB-WP-0020-provider-routing-cli.md |
| task | IB-WP-0020-T02 | done | — | workplans/IB-WP-0020-provider-routing-cli.md |
| task | IB-WP-0020-T03 | done | — | workplans/IB-WP-0020-provider-routing-cli.md |
| task | IB-WP-0020-T04 | done | — | workplans/IB-WP-0020-provider-routing-cli.md |
| task | IB-WP-0020-T05 | done | — | workplans/IB-WP-0020-provider-routing-cli.md |
| task | IB-WP-0021-T01 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0021-T02 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0021-T03 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0021-T04 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0021-T05 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0021-T06 | done | — | workplans/IB-WP-0021-scope-intent-reconciliation.md |
| task | IB-WP-0022-T01 | todo | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |
| task | IB-WP-0022-T02 | todo | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |
| task | IB-WP-0022-T03 | todo | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |
| task | IB-WP-0022-T04 | todo | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |
| task | IB-WP-0022-T05 | todo | — | workplans/IB-WP-0022-content-explorer-presentation-binding.md |

View file

@ -0,0 +1,222 @@
---
id: IB-WP-0022
type: workplan
title: "Bind infospaces to content-explorer as the presentation UI"
domain: communication
repo: infospace-bench
status: ready
owner: grok
topic_slug: content-explorer-presentation
created: "2026-10-14"
updated: "2026-10-14"
state_hub_workstream_id: "8b7261bb-9264-515c-948f-b6384e74fdfd"
---
# IB-WP-0022 — Bind infospaces to content-explorer as the presentation UI
## Goal
Bind concrete infospaces to content-explorer as the presentation UI.
Infospace-bench stays the source of the knowledge artifacts.
Content-explorer only presents them.
The binding is a projection into content-explorer’s existing snapshot
contract (`contracts/snapshot.schema.json`, schema version 0.1) and one
dataspace presentation manifest (`contracts/manifest.schema.json`, schema
version 0.1). Kind labels, facets, and relation wording live in that
manifest, so presentation does not require new UI code, an OnCo clone, or
a new knowledge store in this repo.
`lefevre-reminiscences-of-a-stock-operator` is the worked example. The
projection shape is reusable for later infospaces. Lefevre is the example,
not a one-off screen.
## Context
Read-only shapes this plan cites (do not edit them in this workplan):
- Infospace: `infospaces/lefevre-reminiscences-of-a-stock-operator/`
(`infospace.yaml`, `artifacts/index.yaml`, `artifacts/sources/`,
`artifacts/entities/`, `artifacts/relations/`).
- Content-explorer: `contracts/SNAPSHOT.md`, `contracts/snapshot.schema.json`,
`contracts/manifest.schema.json`, `architecture/ConnectorContract.md`,
`examples/dataspaces/*/manifest.json`, and
`content_explorer/contract.py` (`size_errors`, default minimum three kinds
and eight entities, enforced for published examples by
`scripts/validate_fixtures.py` with `require_size=True`).
As of 2026-10-14 the Lefevre tree is a file-backed infospace, not a
content-explorer snapshot. `artifacts/index.yaml` records four storage
kinds: `source` (6 chapter chunks), `entity` (14 files), `relation`
(6 files), and `generated` (summaries, entity bundles, evaluations).
Storage kind is not a presentation kind.
Sources already carry provenance and rights. Each source entry has
`provenance.digest`, `provenance.original_path`, `provenance.imported_at`,
and `provenance.book_metadata` with `rights: Public domain in the USA.`,
`identifier: http://www.gutenberg.org/60979`, and
`source_url: https://www.gutenberg.org/files/60979/60979-h/60979-h.htm`.
Entities and relations point back with `generated_from` (and entities also
`split_from`). Rights are on the source book metadata, not copied onto
each entity file.
Entity bodies are Markdown with `## Definition` and `## Category`. The 14
entities use these category values: `instrument` (4), `strategy` (3),
`market` (2), and one each of `event`, `evidence_bearing_claim`,
`institution`, `error`, and `trader`. That is eight category values and
fourteen entities, which can satisfy the published-example minimum only
after they are mapped to snapshot `kinds` / `entities`. The trading
literature entity contract’s closed list does not include `event`; the
projection must map the categories actually stored, not rewrite the files
to match the contract.
Relation files hold 27 blocks (split on `---`), not one relation per file.
`## Relation Type` is the stable vocabulary: `actor_venue` (8),
`cause_effect` (7), `strategy_outcome` (5), `risk_mitigation` (4),
`lesson_evidence` (3). `## Predicate` is free text (`operates in`, `is`,
`was sold at`, and similar) and does not match the snapshot predicate
pattern `^[a-z0-9-]+$`. Many subjects and objects are phrases that do not
match an entity title. The connector contract forbids a fuzzy join.
A snapshot 0.1 document requires `schemaVersion` `0.1`, `dataspace`
(`id`, `title`, `description`), `kinds` (`id`, `label`, `plural`),
`entities` (`id` as `urn:ce:<dataspace>:<kind>:<key>`, `kindId`, `title`,
`tldr`, `summary`, `sourceRefs`), `relations` (`id`, `predicate`, `from`,
`to`, `sourceRefs` with at least one entry), `sources` (`id`, `uri`,
`title`, `license`), and `claims`. A manifest 0.1 document requires
`schemaVersion` `0.1`, `id`, `home.heading`, `home.featuredKinds`,
`navigation`, `kindViews` (`columns`, `facets`), `panels`,
`relationLabels` (`forward`, `inverse`), and `factPolicy`.
## Reusable projection
One infospace projects to one snapshot plus one presentation manifest.
Dataspace id is the infospace slug when it matches `^[a-z0-9-]+$`.
Lefevre’s slug already does.
| Infospace artifact | Snapshot / manifest field |
| --- | --- |
| Work-level `book_metadata` (or the equivalent rights-bearing source record on a later infospace) | One `sources[]` row: `uri` from `source_url` or `identifier`, `title` from the book title, `license` from `rights`, `retrievedAt` from the `imported_at` date. Chunk `digest`, `original_path`, and `chunk_id` stay as provenance on that source or in entity properties. Do not drop rights. |
| Each `kind: source` chunk | Evidence locator cited by `sourceRefs`. Not a presentation kind by itself. |
| Each `kind: entity` file | One `entities[]` row. `kindId` is the `## Category` value with underscores replaced by hyphens so it matches `^[a-z0-9-]+$` (`evidence_bearing_claim` → `evidence-bearing-claim`). `id` is `urn:ce:<slug>:<kindId>:<entity-key>`. `title` from the heading. `tldr` and `summary` from `## Definition`. `sourceRefs` from `generated_from` targets, resolved to the work-level source id. Copy provenance (`workflow_id`, `stage_id`, `input_artifact_id`, provider) into `properties`. |
| Distinct mapped `kindId` values | `kinds[]` plus manifest `kindViews` (columns and facets) and `home.featuredKinds` / `navigation`. Labels and plural wording are manifest-driven. |
| Each relation block | One `relations[]` row when both ends resolve to projected entity ids. `predicate` is `## Relation Type` with underscores replaced by hyphens (`actor_venue` → `actor-venue`). Free-text `## Predicate` is wording or a property, not the predicate id. `sourceRefs` cites the relation artifact’s `generated_from` source. Manifest `relationLabels` supplies `forward` and `inverse` for each predicate. |
| Unresolved subject or object | Quarantine. No fuzzy match to entity titles. A second pass may link only an explicit normalized title already stored on an entity. |
| `kind: generated` summaries, bundles, and evaluations | Out of the browse set for this binding unless a later task maps them on purpose. They are not required for the Lefevre example. |
The same table is the rule for a later infospace. A later infospace supplies its own slug, source rights record, entity categories, and relation types. It does not get a new screen.
## Publication constraint
A later published example must satisfy content-explorer snapshot and manifest
rules: schema version 0.1, manifest-driven kinds, and the published-example
minimum of at least three kinds and eight entities. That minimum is met by
mapping this infospace (category → kind, entity file → entity, relation
block → relation). The current Lefevre files are not already a snapshot.
Do not point content-explorer at `artifacts/` and call it published.
Validation of the Lefevre pair uses the existing content-explorer checks
(schema, dangling references, duplicate ids, missing sources, license on
every source, and `size_errors` / `require_size`). Running those checks
does not change the content-explorer application. Tasks in this workplan
do not edit `/home/worsch/content-explorer`.
## Non-goals
- This workplan does not implement the binding. It does not add the
projection, connector, export command, snapshot, or manifest.
- This workplan does not rewrite the Lefevre infospace, regenerate it, or
change its artifacts.
- This workplan does not make content-explorer the system of record.
Infospace-bench remains the source of the knowledge artifacts.
Content-explorer only presents them.
- This workplan does not include building content-explorer UI. Tasks owned
here do not change the content-explorer application, its UI, its schemas,
or its examples.
- No OnCo clone and no new knowledge store in this repo.
- No binding of any infospace other than by specifying this reusable shape
and carrying it out on the Lefevre example.
## Tasks
### T01 — Specify the reusable projection rule
```task
id: IB-WP-0022-T01
status: todo
priority: high
state_hub_task_id: "128d6123-f855-529a-bf8f-7eb7442872cd"
```
Write the projection rule the implementer will code: infospace sources,
entities, and relations, including provenance and rights already stored on
those artifacts, become one content-explorer snapshot (schema version 0.1)
plus one presentation manifest (schema version 0.1). Record the kind
mapping (`## Category` → `kindId`), the predicate mapping (`## Relation
Type` → `predicate`), the `urn:ce:<slug>:<kind>:<key>` id shape, the
work-level source/license row, and the quarantine rule for unresolved
relation ends. State that the same shape applies to a later infospace and
that Lefevre is the example. Do not treat storage kinds `source`, `entity`,
`relation`, and `generated` as presentation kinds.
### T02 — Project the Lefevre snapshot
```task
id: IB-WP-0022-T02
status: todo
priority: high
state_hub_task_id: "5861057c-865c-5c4c-8537-9b9a93bda503"
```
Project `infospaces/lefevre-reminiscences-of-a-stock-operator/` into one
snapshot. Include the six source chunks’ provenance and the Gutenberg
rights (`Public domain in the USA.`) on `sources[].license`. Include the
14 entities with category-derived kinds, definitions as `tldr`/`summary`,
and `sourceRefs`. Include relation blocks whose ends resolve, using
relation-type predicates. Leave generated summaries and evaluations out of
the browse set. Do not rewrite the infospace.
### T03 — Write the Lefevre presentation manifest
```task
id: IB-WP-0022-T03
status: todo
priority: high
state_hub_task_id: "922bddc1-ae21-523d-ad60-de1e4536954e"
```
Write one manifest for dataspace `lefevre-reminiscences-of-a-stock-operator`
with schema version 0.1. It carries kind labels and plurals’ presentation
(`kindViews` columns and facets, `home.featuredKinds`, `navigation`),
`relationLabels` forward and inverse wording for each projected predicate,
`panels` drawn from `summary`, `relations`, `evidence`, and `claims`, and
a `factPolicy`. Presentation uses this manifest. It does not add UI code.
### T04 — Validate the Lefevre pair against the publication rules
```task
id: IB-WP-0022-T04
status: todo
priority: high
state_hub_task_id: "f85eae30-b72c-5297-b9cf-d4376b13faa2"
```
Validate the projected snapshot and manifest against schema version 0.1 and
the published-example minimum of at least three kinds and eight entities.
Check dangling references, duplicate ids, missing sources, and a license on
every source. Pass by mapping this infospace. Fail the check if someone
treats the current `artifacts/` tree as an already-valid snapshot.
### T05 — Record the reusable rule beside the example
```task
id: IB-WP-0022-T05
status: todo
priority: medium
state_hub_task_id: "3852fcf3-d565-592d-8f18-6793948d7473"
```
Record the projection rule next to the Lefevre example so a later
infospace reuses the same snapshot and manifest shape. The note names
Lefevre as the worked example and states that content-explorer only
presents artifacts that infospace-bench still owns.