Implement deterministic full-text index generation #22
Labels
No labels
area/deployment
area/governance
area/metadata
area/pipeline
area/search
type/data
type/design
type/implementation
type/testing
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
Depends on
#23 Implement the offline search library and CLI
Arkive/arkive
#48 Generate and validate a separate local-content index
Arkive/arkive
#21 Define index manifest schema v0.1
Arkive/arkive
Reference
Arkive/arkive#22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Reject schema-invalid or cross-record-invalid metadata.
Exclude unaccepted, metadata-only, rejected, or otherwise non-bundleable sources.
Preserve chunk, document, and source IDs in the index.
Apply the backend configuration recorded by the index manifest.
Detect duplicate, missing, or stale inputs.
Build the index offline without network calls.
Emit the index artifact and a validated manifest.
Produce deterministic output or explicitly isolate and document unavoidable backend variation.
Use non-destructive or atomic output handling.
Vector or hybrid indexes.
Automatic source processing.
A deployment bundle.
Large-corpus scaling work.
Ineligible or invalid records are rejected or excluded according to documented rules.
Source, document, and chunk identifiers are recoverable from every result record.
The emitted manifest validates and matches the built artifact.
Repeated builds are identical under the documented determinism contract.
A failed build does not replace a valid existing index.
The builder operates without network access.
Build the pilot index twice and compare artifacts and manifests.
Exercise invalid, duplicate, stale, and non-bundleable input fixtures.
Run with networking disabled.
Verify index integrity against the manifest.
Opened PR #70 on
feature/issue-22-index-builderimplementing the builder asarkive.index_build(installed asarkive-build-index). It records itself underbuild.builder, usesarkive.index_manifest.chunks_digest, and honours the all-chunks-per-document membership contract from #21. Eligibility rules, the eight fail-closed stages, and the determinism claims are indocs/index-build.md. The pilot-core fixture is now produced by the builder itself; its artifact bytes are unchanged.Completed by PR #70.
The deterministic lexical index builder is now implemented using SQLite FTS5, following the backend decision from ADR-0004 and the index-manifest contract from Issue #21.
The implementation includes validated record-tree input, explicit eligibility/exclusion handling, document and chunk integrity verification, deterministic insertion/build behavior, manifest generation and validation, offline execution, safe replacement with rollback, symlink-aware storage-boundary enforcement, and fail-closed handling of unexpected SQLite side files.
The final branch was synchronized with
developand the full validation suite passed before merge.Closing as complete.