feat: provider access to the fact log + shared stamp verifier via internals
Three additive surfaces for native index providers, which hold only `storage` and must never construct their own fact-log reader (the log's open path is writer-side — it reconciles by truncating/rewriting): - Fact-scan capability on the storage adapter (the getBinaryBlobPath pattern): the host brain wires a closure over its LIVE fact log at init; providers call storage.scanFacts()/factLogHeadGeneration()/ factSegmentPaths() and fall back to the enumeration walk on null. Restore/reopen swaps the underlying log transparently. - The family-stamp trio (readFamilyStamp/writeFamilyStamp/ verifyFamilyStamp + types) exported from @soulcraft/brainy/internals, so 'one verifier' is literally one function shared with the native side, never two synchronized copies. - Rollup invariants widened to number|string: content fingerprints (e.g. a per-tree SHA-256) are valid invariant values; strict equality either way, and a type mismatch reads as incoherence, never a pass.
This commit is contained in:
parent
70886da548
commit
352e356fd5
7 changed files with 153 additions and 3 deletions
|
|
@ -19,3 +19,29 @@ export type { MemoryInfo, CacheAllocationStrategy } from './utils/memoryDetectio
|
|||
// HNSWNounWithMetadata. First-party plugins (Cor) use this to stay in
|
||||
// lockstep with the entity shape contract.
|
||||
export { resolveEntityField, STANDARD_ENTITY_FIELDS } from './coreTypes.js'
|
||||
|
||||
// The generalized family stamp — ONE verifier, both member modes, shared
|
||||
// verbatim with native providers so stamp verification is literally one
|
||||
// function, never two synchronized copies. Providers write the same shape
|
||||
// (their set-swap rewrites stamps, so adoption is migration-free).
|
||||
export {
|
||||
readFamilyStamp,
|
||||
writeFamilyStamp,
|
||||
verifyFamilyStamp,
|
||||
FAMILY_STAMPS_PREFIX,
|
||||
ENTITY_TREE_STAMP_PATH
|
||||
} from './db/familyStamp.js'
|
||||
export type {
|
||||
FamilyStamp,
|
||||
StampMembers,
|
||||
StampVerdict,
|
||||
EnumeratedMember,
|
||||
StampStorage
|
||||
} from './db/familyStamp.js'
|
||||
|
||||
// Generation fact-log types — the scan surface a provider reaches through the
|
||||
// storage capability (`storage.scanFacts` / `storage.factLogHeadGeneration` /
|
||||
// `storage.factSegmentPaths`, wired by the host brain at init). Providers
|
||||
// never construct a FactLog themselves: open() is writer-side (it reconciles
|
||||
// by truncating/rewriting) and there is exactly one writer.
|
||||
export type { CommitFact, FactOp, FactScanBatch, FactScanHandle } from './db/factLog.js'
|
||||
|
|
|
|||
Reference in a new issue