Start co-developing FormBD and VeriSimDB to the same level
- Current Status Summary
- Quick Reference
- Week 1-2: Getting Started (verisim-document)
- Week 3-4: Continue Milestone V1
- Week 5-6: Complete Milestone V1
- Parallel FormBD Work (Weeks 1-6)
- Weekly Sync Protocol
- Testing Strategy
- Integration Testing
- Documentation Tasks
- Checkpoints
- Troubleshooting
- Resources
- Next Steps
- Getting Help
| Project | Completion | Phase | Next Milestone |
|---|---|---|---|
FormBD |
70% |
PoC implementation |
M11: HTTP API Server |
VeriSimDB |
10% |
Implementation ramp-up |
V1: Rust Modality Stores |
Goal: Bring VeriSimDB to 70% (match FormBD) by Week 16, then advance both to production readiness.
-
Parallel Development Plan: FORMBD-VERISIMDB-PARALLEL-DEV.adoc
-
FormBD STATE: formbd/STATE.scm
-
VeriSimDB STATE: verisim/STATE.scm
-
FormBD ECOSYSTEM: formbd/ECOSYSTEM.scm
-
VeriSimDB ECOSYSTEM: verisim/ECOSYSTEM.scm
All in ~/Documents/hyperpolymath-repos/:
| Repo | Purpose |
|---|---|
|
Core database engine (Forth + Factor + Zig) |
|
R-tree spatial indexing projection layer |
|
Columnar OLAP analytics projection layer |
|
Zero-friction GUI for non-technical users |
|
Proof-carrying debugger (Lean 4 + Idris 2) |
|
BEAM/Elixir integration layer |
|
Open-source Airtable alternative with provenance |
|
Post-truth reference manager with PROMPT scores |
Single repo with 10 Rust crates:
| Crate | Purpose |
|---|---|
|
Full-text search (Tantivy) - Start here |
|
Version history, time-travel queries |
|
RDF + property graph (Oxigraph) |
|
Embeddings, similarity search (HNSW) |
|
Type annotations, ZKP integration |
|
Multi-dimensional numeric data |
|
Unified entity abstraction |
|
Cross-modal drift detection |
|
Self-normalization (to be enhanced with FormBD’s approach) |
|
HTTP API server |
# Rust (edition 2024)
rustc --version # Should be 1.80+
# Elixir
elixir --version # Should be 1.17+
# ReScript (for VCL parser)
npm install -g rescript # Or use deno
# FormBD tools
gforth --version # Forth interpreter
factor --version # Factor runtime (0.102)
zig version # Zig compiler# Verify repos are in canonical location (symlink to Eclipse drive)
ls -la ~/Documents/hyperpolymath-repos/formbd
ls -la ~/Documents/hyperpolymath-repos/verisim
# Navigate to VeriSimDB
cd ~/Documents/hyperpolymath-repos/verisim
# Build Rust workspace
cargo build
# Run tests (should have some scaffolding tests)
cargo testGoal: Implement full-text search modality using Tantivy
cd ~/Documents/hyperpolymath-repos/verisim/rust-core/verisim-document
# Check existing code
cat src/lib.rs
# Check Cargo.toml dependencies
cat Cargo.tomlCreate (verisim-document/src/crud.rs):
use tantivy::schema::*;
use tantivy::{Index, IndexWriter, TantivyError};
use uuid::Uuid;
pub struct DocumentStore {
index: Index,
writer: IndexWriter,
schema: Schema,
}
impl DocumentStore {
pub fn new() -> Result<Self, TantivyError> {
let mut schema_builder = Schema::builder();
schema_builder.add_text_field("hexad_id", STRING | STORED);
schema_builder.add_text_field("title", TEXT | STORED);
schema_builder.add_text_field("body", TEXT);
let schema = schema_builder.build();
let index = Index::create_in_ram(schema.clone());
let writer = index.writer(50_000_000)?;
Ok(Self { index, writer, schema })
}
pub fn create(&mut self, hexad_id: Uuid, title: &str, body: &str) -> Result<(), TantivyError> {
let title_field = self.schema.get_field("title").unwrap();
let body_field = self.schema.get_field("body").unwrap();
let id_field = self.schema.get_field("hexad_id").unwrap();
let mut doc = Document::default();
doc.add_text(id_field, hexad_id.to_string());
doc.add_text(title_field, title);
doc.add_text(body_field, body);
self.writer.add_document(doc)?;
self.writer.commit()?;
Ok(())
}
}Read/Search (verisim-document/src/search.rs):
use tantivy::collector::TopDocs;
use tantivy::query::QueryParser;
use tantivy::{Index, TantivyError};
pub struct SearchResult {
pub hexad_id: String,
pub title: String,
pub score: f32,
}
pub fn search(index: &Index, query_str: &str, limit: usize) -> Result<Vec<SearchResult>, TantivyError> {
let reader = index.reader()?;
let searcher = reader.searcher();
let schema = index.schema();
let title_field = schema.get_field("title").unwrap();
let body_field = schema.get_field("body").unwrap();
let query_parser = QueryParser::for_index(&index, vec![title_field, body_field]);
let query = query_parser.parse_query(query_str)?;
let top_docs = searcher.search(&query, &TopDocs::with_limit(limit))?;
let mut results = Vec::new();
for (score, doc_address) in top_docs {
let retrieved_doc = searcher.doc(doc_address)?;
let hexad_id = retrieved_doc.get_first(schema.get_field("hexad_id").unwrap())
.unwrap().as_text().unwrap().to_string();
let title = retrieved_doc.get_first(title_field)
.unwrap().as_text().unwrap().to_string();
results.push(SearchResult { hexad_id, title, score });
}
Ok(results)
}Install proptest:
# In verisim-document/Cargo.toml
[dev-dependencies]
proptest = "1.4"Property tests (verisim-document/tests/property_tests.rs):
use proptest::prelude::*;
use verisim_document::DocumentStore;
use uuid::Uuid;
proptest! {
#[test]
fn test_insert_then_search(title in "\\w{1,50}", body in "\\w{10,200}") {
let mut store = DocumentStore::new().unwrap();
let hexad_id = Uuid::new_v4();
// Insert document
store.create(hexad_id, &title, &body).unwrap();
// Search should find it
let results = verisim_document::search(&store.index, &title, 10).unwrap();
assert!(results.len() > 0);
assert_eq!(results[0].hexad_id, hexad_id.to_string());
}
}cd ~/Documents/hyperpolymath-repos/verisim/rust-core/verisim-document
cargo test
# Expected: All tests pass
# If failures, review and fixImplement version history similar to FormBD’s journal:
-
Use FormBD’s journal format as inspiration (
formbd/spec/journal.adoc) -
CBOR encoding for entries (like FormBD)
-
Time-travel queries (VERSION AT timestamp)
-
HNSW index for embeddings
-
Similarity search (cosine, euclidean, dot product)
-
Integration with document modality for hybrid search
While implementing VeriSimDB modalities, FormBD team works on:
-
M11: HTTP API Server (FormBD currently has no HTTP interface)
-
Form.Normalizer: Implement FD discovery (currently design-complete)
-
Migration artefacts: Complete M3 pending item
Every Friday:
-
Update STATE.scm in both repos
-
Review blockers in both projects
-
Identify synergies:
-
Can VeriSimDB’s document modality learn from FormBD’s implementation?
-
Can FormBD’s normalization approach enhance VeriSimDB’s normalizer?
-
-
Adjust priorities based on dependencies
;; Add to verisim/STATE.scm session-history every Friday
(snapshot (date "2026-02-XX") (session "week-N-sync")
(accomplishments
"Completed verisim-document CRUD operations"
"Added property-based tests (10 passing)"
"Integrated Tantivy for full-text search")
(blockers
"VCL parser → execution engine integration needs design")
(formbd-synergy
"Reviewed FormBD's journal format for verisim-temporal inspiration"))FormBD uses property-based testing extensively. Reuse patterns:
# Review FormBD's property tests
cat ~/Documents/hyperpolymath-repos/formbd/tests/property/*.res
# Apply similar patterns to VeriSimDB Rust crates
# Example: "If you insert X, searching for X should return X"Once Milestone V2 (Hexad layer) is complete, test cross-modal queries:
-- VCL query spanning document + vector modalities
SELECT hexad.title, hexad.embedding
FROM hexads
WHERE
DOCUMENT MATCHES "neural networks" AND
VECTOR SIMILAR TO embedding(query_text) WITHIN 0.8;As you implement, update:
-
README.adoc: Update "Quick Start" with actual build/run instructions
-
API Reference: Document each modality’s API
-
QUICKSTART.adoc: Create end-to-end tutorial
-
STATE.scm: Update weekly with progress
-
❏ verisim-document CRUD complete
-
❏ Property-based tests passing
-
❏ Tantivy integration working
-
❏ STATE.scm updated (completion: 10% → 20%)
-
❏ All 6 modality stores operational
-
❏ Unit tests + property tests passing for all modalities
-
❏ STATE.scm updated (completion: 20% → 40%)
-
❏ FormBD M11 HTTP API design reviewed for VeriSimDB API inspiration
-
❏ Hexad entity layer complete
-
❏ Cross-modal queries working
-
❏ Drift detection operational
-
❏ STATE.scm updated (completion: 40% → 55%)
-
❏ VCL execution engine complete
-
❏ EXPLAIN functionality working
-
❏ Query planner operational
-
❏ STATE.scm updated (completion: 55% → 65%)
Issue: Rust compilation errors in verisim-* crates
Solution: Check Rust edition in Cargo.toml (should be edition = "2024")
Issue: VCL parser (ReScript) → execution engine (Rust) integration unclear
Solution: Review FormBD’s Factor → Zig integration (formbd/core-zig/src/bridge.zig)
Issue: Testing framework setup time-consuming
Solution: Copy FormBD’s test structure (formbd/tests/) and adapt for Rust
-
FormBD Documentation: formbd/README.adoc
-
VeriSimDB Whitepaper: verisim/WHITEPAPER.md
-
VCL Grammar: verisim/docs/vcl-grammar.ebnf
-
FormBD FBQL Spec: formbd/spec/fbql.adoc
-
ABI/FFI Standard: FFI Migration Guide
-
Now: Review this guide and the parallel development plan
-
Today: Set up development environment (Rust, Elixir, gforth, factor, zig)
-
This week: Begin Milestone V1 - verisim-document implementation
-
Friday: First weekly sync, update STATE.scm with progress
If you encounter blockers:
-
Check FormBD’s implementation for similar features
-
Review VeriSimDB’s extensive design docs (
docs/) -
Update STATE.scm blockers section
-
Adjust priorities in weekly sync
Remember: The goal is parallel advancement, not sequential. FormBD and VeriSimDB can learn from each other throughout the process.