Revision And State Model¶
A Git revision is a Pollenomics database snapshot. Trust depends on the snapshot carrying authorities, required companions, review decisions, manifests, exclusions, and public projections from the same causal state.
The domain language defines revision, lineage, posture, product, and projection as separate identities.
Lifecycle State Is Not A Quality Score¶
| State | Establishes | Does not establish |
|---|---|---|
| captured | identified material entered the repository | correct interpretation or completeness |
| normalized | source meaning has a repository representation | fitness for a scientific claim |
| reviewed | named dimensions were evaluated under declared rules | fitness for every product |
| published | a governed object entered one manifested projection | universal acceptance or source completeness |
A family can be present at every lifecycle stage while individual records are qualified, unresolved, or excluded. Stage presence reports infrastructure and coverage state; record-level decisions report scientific fitness.
How Stage Presence Is Proven¶
data/source_family_contracts.json names the artifact or artifacts that prove
each stage for each source family. The state evaluator requires those named
artifacts to contain governed content.
| Observation | Stage result | Reason |
|---|---|---|
| contracted normalized GeoJSON exists and is non-empty | normalized may be present |
the declared normalized evidence is materialized |
normalized directory contains only .gitkeep |
normalized is missing |
directory structure is not evidence |
| a summary exists but the contracted member dataset does not | normalized is missing |
counts cannot replace the governed records they summarize |
| evidence-stage matrix exists but a source-specific review does not | reviewed is missing |
a status report cannot certify its own review input |
| a retained publication exists while an upstream stage is missing | published is present, readiness remains blocked |
historical product existence and current reproducibility are different facts |
This last condition is intentional. A published artifact is not deleted merely because the current database state exposes a missing prerequisite. Instead, the matrix preserves the publication surface, marks the missing stage, and sets a blocking posture. Readers can then distinguish retained output from a product that can be regenerated and defended from the current snapshot.
Claim And Membership States¶
| State | Meaning |
|---|---|
| accepted | the claim satisfies the declared evidence contract |
| qualified | the claim is usable only with an explicit limit |
| conflicted | incompatible supported values remain unresolved |
| unresolved | evidence is insufficient to select a defensible value |
| excluded | a known object fails a named product contract |
| deferred | a decision awaits recoverable evidence or review |
| outside scope | the object may be valid but is not part of the product population |
These states are database values. They must survive summaries and refreshes even when only accepted and qualified members appear in a public map.
Coherent Snapshot¶
flowchart TD
Authority["governing authority changes"] --> Relations["dependent claims and relations"]
Relations --> Decisions["curation and admission decisions"]
Decisions --> Manifests["membership, exclusions, and accounting"]
Manifests --> Views["tables, maps, reports, and warnings"]
Views --> Coherence{"same revision and causal state?"}
Coherence -->|yes| Snapshot["coherent database snapshot"]
Coherence -->|no| Partial["partial state; publication refused"]
Updating a visible map without its manifest is a partial transaction. Updating a normalized fact without reevaluating dependent admissions is also partial, even if the map happens to remain visually unchanged.
Evidence Changes Are Semantic Transactions¶
A coherent change begins at the earliest authority whose meaning changed and ends only when every affected decision and projection has been accounted for:
| Authority change | Required transaction boundary |
|---|---|
| captured artifact replaced | capture identity, extraction locators, normalized descendants, review, and affected products |
| sample identity merged or split | aliases, project relations, dimension claims, species views, admissions, and member identities |
| locality or coordinate strengthened | prior claim, new provenance, point posture, geography predicates, and presentation caveats |
| chronology reclassified | source wording, normalized basis, comparability, temporal joins, and public labels |
| product rule changed | eligible population, decisions, manifest, exclusions, counts, and reader-facing claim |
flowchart LR
Before["coherent prior snapshot"] --> Authority["governing change"]
Authority --> Impact["typed dependent relations"]
Impact --> Decisions["reevaluated decisions"]
Decisions --> Products["regenerated products and accountability"]
Products --> Compare["semantic and membership diff"]
Compare --> After["coherent new snapshot"]
A transaction may legitimately produce no visible map change. In that case, the review still explains why membership remained stable despite changed evidence. Conversely, an unchanged total is not proof of a no-op because one member or evidence class may have replaced another.
Snapshot Invariants¶
A coherent revision satisfies all of these invariants:
- every repeated fact resolves to one declared authority;
- every admitted member resolves backward to typed evidence and a decision;
- every exclusion names a known object, rule, and product population;
- stage labels are reproducible from contracted artifacts, not directory names;
- public counts reconcile with manifests and their declared denominators;
- generated descendants do not become authorities for their own inputs;
- missing, conflicted, and unresolved states remain visible after refresh.
Violation of an invariant is a database defect even when every Markdown page renders and every map opens.
Snapshot Reconciliation Receipt¶
Before a revision is treated as one coherent evidence state, reconcile each affected population through the complete lifecycle:
| Receipt member | Required reconciliation |
|---|---|
| source population | expected and captured members, additions, removals, retrieval failures, and content identities |
| normalized population | source-to-member mapping, exclusions, null states, identity merges or splits, and semantic changes |
| reviewed population | accepted, qualified, conflicted, unresolved, deferred, and refused members by claim dimension |
| admitted population | eligible denominator, product rule, admitted members, exclusions, and outside-scope members |
| published population | manifest members, stable feature identities, warnings, format parity, and parent–child scope relations |
| retained non-members | known objects absent from publication with one recoverable boundary and reason |
flowchart LR
Source["captured population"] --> Normalized["normalized population"]
Normalized --> Reviewed["reviewed population"]
Reviewed --> Admitted["admitted population"]
Admitted --> Published["manifested population"]
Source --> NonMembers["accounted non-members"]
Normalized --> NonMembers
Reviewed --> NonMembers
Admitted --> NonMembers
Published --> Receipt["coherent snapshot receipt"]
NonMembers --> Receipt
The populations need not have equal counts. Coherence means every transition has a declared rule and every difference is accounted for at member level. An unexplained equality is weaker evidence than an explained reduction.
Version Identities¶
Different versions answer different questions:
| Identity | Fixes |
|---|---|
| upstream release or accession | the source program or archive material selected |
| captured content digest | the bytes or logical capture represented |
| schema version | the interpretation expected for one artifact shape |
| repository revision | the joined database state across authorities and descendants |
| product version | the declared membership and delivery contract |
None substitutes for another. A product filename containing v66 does not
prove that every input comes from AADR v66, and an unchanged source release
does not prove unchanged normalized semantics.
Coherent Read Set¶
A reproducible answer fixes all identities needed by the query, not only the repository commit or product filename:
| Read-set identity | Why it must be fixed |
|---|---|
| repository revision | joins the checked-in authorities, decisions, and descendants |
| source family and upstream release | identifies the upstream population represented |
| captured content identity | distinguishes changed bytes or responses under the same release label |
| schema and rule identities | fixes how records were interpreted and admitted |
| product manifest identity | fixes scope, membership, roles, exclusions, and required companions |
| selected member and claim identities | fixes the exact evidence traversed by the answer |
Mixing a manifest from one revision with evidence rows from another produces a plausible but ungoverned read. The same risk appears when a notebook caches a normalized table while reopening a newer map, or when a copied GeoJSON loses the manifest that identifies its product population. Reuse must either retain the coherent read set or explicitly describe the result as an unverified cross-revision comparison.
A Modified Worktree Is A Candidate Snapshot¶
A commit names an immutable joined state. A worktree with modified governed files does not. It is a candidate whose coherence must be established across every affected authority and descendant before it can support the same claims as a repository revision.
stateDiagram-v2
[*] --> Revision: coherent committed snapshot
Revision --> Candidate: authority or descendant modified
Candidate --> Partial: dependents not reconciled
Candidate --> Verified: identities and populations reconcile
Partial --> Candidate: repair earliest incorrect boundary
Verified --> Revision: commit complete owned state
Record the base revision and changed governed roots when inspecting a candidate. A clean diff is not scientific proof, but an unnamed mixture of committed and modified state cannot provide a reproducible database identity.
Change Classes¶
| Change | Required review |
|---|---|
| new source release | identity, licence, schema, observation unit, coverage, and semantic diff |
| parser or normalization change | source-to-field lineage, null behavior, precision, and member equivalence |
| identity merge or split | aliases, relations, counts, species views, and every dependent product |
| locality or coordinate correction | spatial posture, containment, distances, maps, and exclusions |
| chronology correction | basis, interval semantics, overlap eligibility, summaries, and wording |
| product rule change | population, admissions, exclusions, manifests, counts, and public claims |
Replacement And Failure¶
Collected source roots use staged replacement where declared by the collection summary. A failed refresh preserves the preceding governed root. A successful swap still requires semantic review: newer bytes can narrow coverage, expose a conflict, or invalidate a previous publication decision.
External unavailability is not evidence that the governed state is false. It is a blocked refresh condition. Conversely, a successful download is not evidence that interpretation and publication remain valid.
Reuse Contract¶
A reusable database extract retains the repository revision, product and source versions, typed object identities, evidence roles, relation methods, precision, admission posture, and material qualifications. If an extract drops exclusions, unresolved states, or its denominator, it cannot carry the same coverage claim as the governed snapshot.
For longitudinal comparison, retain both snapshot identities and compare objects and relations before aggregate counts. The minimum diff classifies added, removed, and modified identities; changed fact owners; relation changes; decision changes; and publication effects. A textual changelog is useful context, but the governed member-level diff is the evidence for what changed.