feat: Phase 0 — QumuloDB foundation scaffold - #1
Open
SST-Engineering wants to merge 2 commits into
Open
Conversation
Establishes the complete QumuloDB foundation: **qdb-contract** — kernel boundary types (pure data, WASM-safe) - calendar: KernelCalendar, CalendarException - schedule: ActivityInput/Result, DependencyInput, ScheduleRequest/Result - evm: EVMPeriodInput/Result, EVMRequest/EVMResult - simulation: RiskInput, SimulationRequest/Result, HistogramBin, TornadoEntry - resources: ResourceInput, AssignmentInput, ResourceRequest/Result **qdb-kernel** — computation engines (pure functions, no I/O) - CPM scheduling: forward/backward pass, float, critical path, constraints - EVM: CV, SV, CPI, SPI, EAC (4 methods), TCPI, S-curve periods - Monte Carlo: PERT-Beta, Triangular, Uniform distributions, tornado chart - Resource loading: per-period utilisation, over-allocation detection **qdb-store** — Apache Arrow + Parquet + DataFusion storage layer - Bitemporal schema (valid_time + transaction_time on every table) - In-memory hot tier (Arrow RecordBatch sessions) - On-disk warm tier (Parquet append-only) - DataFusion SQL query engine registration **qdb-cli** — `qdb` CLI binary (schedule/evm/simulate/resources subcommands) CI: build + test + WASM compile check for contract and kernel crates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove unused `uuid` dep from qdb-contract (WASM-unsafe without js feature) - Remove unused `uuid` and `rayon` deps from qdb-kernel - Gate rand/rand_distr as native-only in qdb-kernel (SmallRng::from_entropy requires getrandom/js on wasm32-unknown-unknown; simulation runs server-side) - cfg-gate simulation engine module out of wasm32 builds in engines/mod.rs - Add rustfmt.toml with max_width=120 (Arrow/DataFusion types have long names) - Remove trailing blank line from qdb-store/src/store.rs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The first PR for QumuloDB — the purpose-built project management database engine for the 21st century.
This is Phase 0: the complete foundation. Every type, every engine, and the full storage architecture is scaffolded and ready to build on.
What's in this PR
qdb-contract— Kernel boundary typesThe single source of truth for every type that crosses the computation boundary. Pure data structs — no I/O, no async, no platform code. Compiles to
wasm32-unknown-unknownunchanged.calendar—KernelCalendar,CalendarExceptionwith working-time arithmeticschedule—ActivityInput/Result,DependencyInput,ScheduleRequest/Result,ScheduleWarningevm—EVMPeriodInput/Result,EVMRequest,EVMResult(all standard EVM metrics)simulation—RiskInput,SimulationRequest/Result,HistogramBin,TornadoEntry,RiskContributionResultresources—ResourceInput,AssignmentInput,ResourceRequest/Result,PeriodLoadResult,LevellingAdjustmentqdb-kernel— Computation enginesPure functions. No I/O. The kernel IS the product.
qdb-store— Storage layerThree-tier architecture using Apache Arrow, Parquet, and DataFusion as building materials:
RecordBatchsessions per project — zero-copy in-memory accessBitemporal schema on every table:
valid_from/valid_to(world time) +txn_from/txn_to(system time).qdb-cli—qdbbinaryCI
rustfmtcheckqdb-contractandqdb-kernelDocs
docs/architecture.md— full three-tier storage, bitemporal model, crate graph, Gentia/Artemis paralleldocs/qql.md— QQL language reference withAS OF VALID TIME,SCHEDULE_PERIOD OVERLAPS, native CPM/EVM columnsDesign principles
QumuloDB draws its philosophy from Artemis (1977) and Gentia (1990s) — systems where the project model was the engine, not a layer over a general-purpose database. Artemis A2 had
TIME,PERIOD,CALENDAR,ACTIVITY,RESOURCE, andCOST-ACCOUNTas first-class language primitives. QumuloDB pursues the same idea in Rust for the 2020s and beyond.Roadmap from here
AS OF VALID TIME,SCHEDULE_PERIOD OVERLAPS)🤖 Generated with Claude Code