Lineage profile matrix
This matrix turns the workshop's general theory into a decision surface over the derivation cases Commonplace actually has. It is descriptive where a shipped contract already answers the question, prescriptive where the working files converge, and explicitly unresolved where adopting a row would require changing a contract.
The matrix separates facts that the current lineage vocabulary sometimes bundles together:
- Semantic dependency — what the derivative depends on and what kind of relation holds.
- Carrier — where that dependency is recorded.
- Invalidation — what a source or contract change causes.
- Retention — which artifacts or state survive the producing run.
- Producer provenance — where model, runner, tool, prompt, or process identity belongs.
For directional lineage, normalize the semantic relation as (derivative, relation, source) regardless of where it is recorded. A source-side ... into: footer, target-side ...-from link, metadata field, commit record, or database row may render that same tuple without reversing it. depends-on below is deliberately neutral working notation, not a proposed registered link label; use derived-from, abstracted-from, operationalized-from, or adapted-from only when its truth condition is met and the relevant collection authorizes it.
Invalidation uses the ladder from verification-locus-and-provenance-theory: L0 untracked, L1 recorded, L2 queried, L3 watched, and L4 in-spec. Deterministic checking is called out separately because it verifies recomputable state rather than reconstructing production history.
Profiles
| artifact or dependency profile | normalized dependency / event | carrier | invalidation rung and response | retention | producer provenance | status |
|---|---|---|---|---|---|---|
| Captured source snapshot | capture(snapshot, external-resource@observed-state); the retained snapshot becomes source material rather than an authored derivative |
Capture metadata on the snapshot; captured body remains immutable | L1 capture record. If capture-method fidelity later matters retroactively, query the recorded cohort at L2 or watch the process dependency at L3. Refresh by creating a new capture, never by silently editing the old body. | Commit when the source is unstable, not durably versioned elsewhere, or needed as evidence. | Capture mechanism, source, and time belong on the snapshot. Model identity is relevant only if a model transformed the content, which a faithful snapshot normally must not do. | Mostly settled. Exact fidelity/version policy remains capture-path-specific. |
| Ingest report or durable source analysis | (analysis, depends-on, snapshot@version + consulted-KB-context); this is judgmental analysis, not necessarily mechanically derived-from the snapshot |
Target-side source_snapshot, citations, and any bounded source manifest in the retained analysis |
L1 source record; L2 on-demand or future queued upstream-change check. A changed source triggers rework/review, not textual patching. | Commit: the analysis is independently useful durable content even though it is derived. | Model/runner/prompt metadata should travel with a one-shot retained analysis; exact shared fields remain to be designed. | Policy settled; provenance schema open. |
| External Git-backed review | (review, depends-on, repository@reviewed-revision + cited-files) |
Repository identity, reviewed revision, commit-pinned citations, and optional quote anchors on the review | L1 stable verification handle; L2 on-demand upstream-HEAD query. Do not create an operational refresh ledger until repeated selection needs one. | Commit the review; do not copy the whole external repository without a special archival reason. | Model/runner belongs on the retained review or its production manifest. | Settled at current scale. |
| Cheap candidate report | (report, depends-on, target@version + report-contract + loaded-context) |
Self-describing report or run manifest while the instance exists; no permanent edge is required unless the report becomes retained evidence or an accepted merge-back input | L0 when fully disposable; L1 while retained for inspection or when its contribution must survive merge-back. Refresh by regenerating. | Gitignore and delete when no longer actionable. Promote findings, not routine report instances. | Record model/runner/contract version in an inspectable report or manifest. A discarded report needs no independent permanent model record unless its use must remain auditable. | Settled default. Promotion expectations for valuable observations remain open by report type. |
| Deterministic generated view | (view, derived-from, authoritative-inputs@versions) where reconstruction is mechanical |
Generator definition plus validator; source hashes may live in runtime metadata when the file must exist | Deterministic check, not a history rung: rebuild and compare or omit the copy. | Do not commit unless a runtime requires the file and a validator prevents drift. | Record generator/tool version, not model metadata. | Settled. |
| Behavior-facing compiled view | (compiled-view, depends-on, authoritative-sources@versions + generator); use derived-from only if no substantive judgment is added |
On the compiled artifact: source hashes or manifest, generator, regeneration rule, owner, and direct-edit policy | L2 check before use or regeneration at current star-shaped scale. Escalate to L3/operational edge state only if many sources feed many compiled views and a swept selector maintains the edges. | Commit only when the behavior channel requires a materialized file and alignment is checked; otherwise build on demand. | Deterministic generator version, or model/runner/prompt metadata when generation is judgmental. | Rule settled; no current second mesh. |
| Retained adapted-from packet or one-off prompt | (packet, adapted-from, selected-sources + caller-judgment) |
Minimal target-side source list/manifest and production context once retained or handed off; an ephemeral prompt need not acquire schema | L0 while genuinely ephemeral; L1 as soon as retained, reused, or used as auditable handoff context. Source change triggers a fit recheck. | Discard after one use, or retain in a workshop; repetition or durable authority forces promotion into a typed report, instruction, skill, or other library artifact. | Record model/runner for a retained generated packet; record the adapting agent or process when that judgment is material. | Boundary settled; minimum retained metadata open. |
| Canonical library artifact shaped from sources | (canonical-artifact, derived-from | abstracted-from | operationalized-from | adapted-from, source) |
Mutable internal source: current default is a source-side ... into: footer. Immutable or externally owned source: target-side pointer, mutable ingest companion, or external edge record must carry the same normalized tuple. |
Relation-specific: rederive-and-compare for derived-from; re-examine the generalization for abstracted-from; judgmental fit recheck for operationalized-from or adapted-from. The artifact remains canonical. |
Commit the canonical artifact and preserve its source or stable verification handle. | Model belongs to the creation/update event or retained derivative, never a stable “last edited by model” field on the canonical artifact. | Blocking contract contradiction. Carrier precedence for immutable/external sources is not declared. |
| Canonical merge-back update | merge-back(new-version, previous-version + accepted-report/findings + consulted-sources + contracts + merge-decision) |
Intentional commit at current volume; source-side pointer only where future source edits should interrupt the canonical target. Add a shared append-only ledger only after an independent cross-artifact audit query appears. | L1 event record now; L2 only when merge-back history must be queried as a cohort. The target remains canonical rather than becoming a disposable derivative. | Commit the new canonical version and enough event provenance; the candidate report may be discarded. | If material, record both report producer and merge actor/model on the event, not in stable target frontmatter. | Settled for current volume; shared event surface deferred. |
| Frozen published article | (article, adapted-from, source-notes@versions) |
Target-side source_notes; no source-side footer in the current article profile |
L1 recorded source set with no automatic freshness registration. Source divergence triggers an editorial decision: annotation, successor, withdrawal, or no change. | Commit article and publication lifecycle metadata; published body remains frozen. | Byline and publication history are authoritative. Model participation, if worth retaining, belongs to production history rather than authorship-like stable metadata. | Locally settled, globally contradictory with the universal source-side rule. |
| Review assay pair | assay(result, note@hash, criterion@hash, model-partition); result_kind fixes verdict versus decisionless-report completion |
Purpose-built SQLite acceptance and input snapshots; generated Markdown remains readable evidence rather than canonical current state | L3 watched over (note, criterion, model-partition). A note or criterion change emits a stale reason and triggers rerun or acknowledgement under review policy. |
Keep operational current state in SQLite; retain report artifacts only as the workflow's evidence/audit policy requires. | Model partition is freshness identity; literal runner model/effort is event provenance. | Settled and implemented. Do not generalize its tables without a second mesh. |
| Semantic criterion in a type or collection contract | (artifact, judged-against, criterion-document@hash) |
Factored review pair with the criterion document on the criterion side | L4 in-spec / L3 watched evidence. Editing what a good artifact looks like invalidates assay evidence and calls for re-judgment; the artifact itself is not automatically regenerated. | Commit the contract and current review mechanism; no separate derivation artifact is needed. | Producer model is irrelevant to the criterion's authority; review runs retain their own model provenance. | Theory settled; contract-migration proposal still missing. |
| Production instruction or skill | (artifact-version, produced-by, skill-or-process@version) when the production fact must survive |
Production-time provenance record on a one-shot derivative or its event; no automatic inclusion in the semantic review key | L0 for ordinary wording/process edits; L1 always-on record where provenance matters; L2 query when a meaningful process improvement has retroactive reach; L3 only when process fidelity is part of the artifact's warrant. Process edits invalidate artifacts worth revisiting, not unchanged semantic verdicts. | Commit the instruction/skill. Retain artifact provenance only to the rung justified by its lifecycle and authority. | Skill/process version and runner/model belong to the production record. | Theory settled; produced_by carrier and migration proposal open. |
Static authored relation, including compares-with |
(left, semantic-relation, right); not every reader link is a derivation dependency |
Ordinary authored link in the collection-authorized direction | L0 on-demand maintenance by default. Static many-to-many topology alone does not justify edge state. | Commit with the authored artifact. | No special producer provenance. | Settled default. New source labels remain separate vocabulary decisions. |
Decisions exposed by the matrix
Five decisions remain before the workshop can extract a coherent contract:
- Normalize direction. Declare
(derivative, relation, source)independently of whether the carrier renders...-from,... into:, metadata, or an operational row. - Choose policy authority and precedence. Decide whether a collection contract selects a lineage profile, whether a type may refine it, and how
cp-skill-writediscovers the effective carrier and invalidation response. The categorical universal source-footer rule cannot coexist with the article and snapshot profiles unchanged. - Specify immutable/external-source carriers. Choose target-side metadata/link, mutable ingest companion, or an external edge record as the default when the semantic source cannot be edited.
- Specify the minimum production record. Define the fields and carrier for retained one-shot derivatives and
produced_byevents without imposing “last model” metadata on canonical artifacts. - Separate optional vocabulary expansion. Decide
contrasts, parallel-mechanism, inverse-lineage, and source-to-source comparison labels from worked cases after the carrier and direction rules are fixed; those labels should not block the general model.
Explicit deferrals
The matrix does not justify building any of the following now:
- a generic lineage SQLite schema;
- a shared append-only event ledger;
- automatic freshness tracking for external repositories;
- swept maintenance for every authored link;
- permanent retention of cheap generated reports.
Each has an activation condition already supplied by the workshop: a real consumer must need an independent audit query, or a second automatic dependency mechanism must develop churning many-to-many edge state and a repeated selector.