ProposalEvidence.confidence and the re-exported ExtractionProposal.confidence are now optional, ExtractionPartial.reason has three more members, and a diff whose current observation is marked incomplete no longer reports missing proposals as removed.
createObserveExtractDiff requires a snapshots store (the store acquisition persists to); it resolves both references to compare their decoding. With Forage 1.0.0, new text captures hash their bytes and carry a new snapshot-reference envelope. A text page whose bytes are not plain UTF-8 (a non-UTF-8 charset, a byte-order mark, or invalid UTF-8) reports changed once on its first check after upgrading, and is extracted again. LookoutErrorKind gains history-full.
ObserveExtractRecorder implementations must add lastExtractedSnapshotRef. A byte-identical unchanged-hash check no longer writes a snapshot, and its currentSnapshotRef equals priorSnapshotRef.
new observation records are version: 2. loadLatest and commit now return StoredProposalObservation, which is StoredProposalObservationV1 | StoredProposalObservationV2. A version 1 record written under a different locale can still read as corrupt-state until it is rewritten. The next commit replaces a version 1 prior with a version 2 record.
createSurveyEmitter (and its SurveyEmitter/EmitSurveyInput/ EmissionResult types) are replaced by createDriftEmitter/DriftEmitter/ EmitDriftInput/DriftResult; DriftResult has no surveyInput field; the @kontourai/survey dependency and the emit-survey CLI command are removed (emit-drift emits neutral drift). Consumers author trust records themselves via @kontourai/surface.