Map the Lefevre infospace to a schema 0.1 snapshot and presentation manifest. Category kinds, Gutenberg rights, and chunk provenance stay on the projection. Relation blocks are included only when both ends match a stored entity title. Assistant: grok Assistant-Session: 01a137af-2bea-7940-9a65-acd892344a72
2.7 KiB
Content-explorer projection
lefevre-reminiscences-of-a-stock-operator is the worked example of the
reusable infospace projection. A later infospace uses the same function,
infospace_bench.presentation.project_infospace, and the same snapshot and
manifest shape. It does not get a separate screen.
Infospace-bench remains the system of record. Content-explorer only presents artifacts infospace-bench still owns. The files in this directory are a projection, not a second copy of the knowledge.
Rule
One infospace becomes one content-explorer snapshot (schema version 0.1) and one presentation manifest (schema version 0.1).
- The dataspace id is the infospace slug.
- Each rights-bearing work becomes one
sources[]row.licenseis the stored rights string,uriissource_urlor the identifier, andtitleis the work title. Chunk digests and original paths stay in that source’sattributionprovenance. They are not presentation kinds. - Each
kind: entityfile becomes one entity.kindIdis the## Categoryvalue normalized withslugify(evidence_bearing_claimbecomesevidence-bearing-claim, andeventstaysevent). The id isurn:ce:<slug>:<kindId>:<key>. The title comes from the heading, without a leadingEntity Title:label.tldrandsummarycome from## Definition.sourceRefspoint at the work-level source. Provenance (workflow_id,stage_id,input_artifact_id,provider) is copied ontoproperties. - Storage kinds
source,entity,relation, andgeneratedare not presentation kinds. Generated summaries, entity bundles, and evaluations stay out of the browse set. - A relation block is included only when both subject and object match one
stored entity title under
slugify(the same normalizer already used for entity keys). That is exact normalized equality, not a fuzzy or partial match. The snapshotpredicateis## Relation Typepassed throughslugify(actor_venuebecomesactor-venue). The free-text## Predicateis not the predicate id. Unresolved or ambiguous ends are quarantined and omitted from the snapshot. - The manifest carries kind labels,
kindViewscolumns and facets, featured kinds, navigation,relationLabelsforward and inverse wording for every predicate the snapshot actually emits, panels limited tosummary,relations,evidence, andclaims, and afactPolicy. No content-explorer UI code is required.
snapshot.json and manifest.json beside this note are the Lefevre
projection produced by that function. The published-example minimum (at least
three kinds and eight entities) is met by this mapping. The raw artifacts/
tree is not a snapshot.