From f001b0c1cfba271b975ec9c99027c47b8b465669 Mon Sep 17 00:00:00 2001 From: tegwick Date: Wed, 14 Oct 2026 02:07:39 +0200 Subject: [PATCH] docs(workplans): add IB-WP-0022 content-explorer presentation binding 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 --- .custodian-brief.md | 17 +- WORK-RECORDS.md | 136 +++++++++++ ...2-content-explorer-presentation-binding.md | 222 ++++++++++++++++++ 3 files changed, 373 insertions(+), 2 deletions(-) create mode 100644 WORK-RECORDS.md create mode 100644 workplans/IB-WP-0022-content-explorer-presentation-binding.md diff --git a/.custodian-brief.md b/.custodian-brief.md index 23aef27..b4044c5 100644 --- a/.custodian-brief.md +++ b/.custodian-brief.md @@ -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) diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md new file mode 100644 index 0000000..c69fa1b --- /dev/null +++ b/WORK-RECORDS.md @@ -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 | diff --git a/workplans/IB-WP-0022-content-explorer-presentation-binding.md b/workplans/IB-WP-0022-content-explorer-presentation-binding.md new file mode 100644 index 0000000..03dbe48 --- /dev/null +++ b/workplans/IB-WP-0022-content-explorer-presentation-binding.md @@ -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:::`, `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:::`. `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:::` 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.