Project Chronology — Federation → Compiler → Browser¶
How the tech was discovered, by the numbers. Every date traces to a git commit or a
cited doc; commit/fix counts are git log extractions on the dates shown. Nothing here
is estimated. Companion to the narrative in VibeProgramming.md
and the feature list in ROADMAP.md.
Snapshot date: 2026-06-22.
The one-line story¶
A federation branch in IfcOpenShell proved IFC could become a queryable SQLite DB inside Blender (Oct 2025). A Java compiler turned that into a repeatable BOM→IFC pipeline with verification gates (Jan 2026). Then the realisation that the SQLite schema, not the Blender addon, was the portable part moved the whole viewer into a browser tab (Apr 2026) — and the browser engine outgrew its parent and split into its own repo (May 2026), where the ERP kernel grew beside the BIM viewer.
Three runtimes were tried; the data format survived all three. That is the discovery.
Milestones (dated, sourced)¶
| Date | Milestone | Where | Significance |
|---|---|---|---|
| 2025-10-25 | "Fix critical scale bug (1000× error)" + coordinate offset fix | IfcOpenShell feature/IFC4_DB |
The meters-vs-millimetres lesson — units/coords had to be pinned before anything rendered true. |
| 2025-10-30 | "Full IFC4 database extraction and loading — MILESTONE" | IfcOpenShell feature/IFC4_DB (commit) |
True origin. IFC → queryable SQLite, inside Bonsai/Blender. |
| 2025-11-01 | "Instant GPU bbox preview + two-button workflow (BREAKTHROUGH!)" | IfcOpenShell feature/IFC4_DB |
Two-stage load (bbox preview → full geometry) — the first time large scenes felt instant. |
| 2025-12-18 | PDF Terrain + Federation GI database | IfcOpenShell feature/IFC4_DB (commit) |
DB-as-scene-data pushed past pure IFC — terrain + River IoT, run as learning exercises. |
| 2026-01-25 | BIM Compiler repo created (Phase 3+4 builders) | BIMCompiler 1702488d |
Work leaves Blender plugin → standalone Java/Maven compiler. |
| 2026-04-11 | Two-DB split born (BLOBs in library.db, hashes in extracted.db) |
BIMCompiler f116fdde (S173) |
Hash-addressed geometry dedup — survives every later runtime. |
| 2026-04-12 | Geometry Nodes halted | BIMCompiler 2bb9335e (S175) |
Blender's instancer hit a hard ceiling (~8 min/orbit at 500 trees). |
| 2026-04-18 | "Direct DB Streaming — no .blend files" | BIMCompiler 66fc9413 (S195) |
Bonsai out, browser in. The schema was always the portable part. |
| 2026-04-20 | BIM OOTB: single HTML + two DBs + sql.js WASM | BIMCompiler 7a19d6e2 (S200) |
126K elements in a browser tab, zero install. |
| 2026-04-24 | IFC import in-browser via web-ifc WASM | BIMCompiler 788eb47c (S220) |
Round-trip closes: IFC → browser → same schema → viewer. |
| 2026-04-27 | InstancedMesh, 85% draw-call reduction | BIMCompiler 9cca45a3 (S231) |
Hash-addressed schema pays off — instancing needed no schema change. |
| 2026-04-29 | SQLite3D_Schema.md published |
docs | Schema formalised as a candidate open standard. |
| 2026-05-23 | bim-ootb split into its own repo | bim-ootb 69d1d63 |
Browser engine outgrew the compiler parent. |
| May–Jun 2026 | Kernel-ERP, DAGeVu modeller, Connect Scene, Genesis tenant, City Mode | bim-ootb | One continuous sprint; per-feature dates in PROGRESS.md / PR logs. |
Performance, stated plainly (two different numbers, often confused)¶
These are two separate things — keep them apart:
- 1,065,130 elements (the sandbox city) → ~13 s to draw as GPU wireframe bounding
boxes only, zero mesh in RAM, then instant orbit. The full meshes are not loaded;
exact IFC geometry streams on demand (<1 s per MESH press near the camera). Measured —
see
StressTest_1M.md. - ~126 K elements (LTU A-House) → ~10 s to render the full meshes to screen (author's machine). This is real geometry, not bounding boxes.
So "a million in seconds" means bounding-box preview; "everything drawn" is the six-figure, full-mesh number. Conflating the two would overstate the result — don't.
By the numbers (commit counts are git rev-list / git log extractions)¶
Phase ledger¶
| Phase | Span | Repo | Commits | Status |
|---|---|---|---|---|
| Federation (IFC-as-SQLite in Blender; Terrain, River IoT) | Oct 2025 – present | red1oon/IfcOpenShell feature/IFC4_DB |
414 authored by red1oon (316 touch the federation module) | 🔵 Upstream / still live — the federation branch remains available to the IfcOpenShell community. It was not dropped from the project; the author personally moved off the Blender renderer when migrating to browser-only SQLite WASM (S195). The SQLite schema carried forward. |
| Java/Maven compiler (IFCtoBOM, DAGCompiler 12-stage, RosettaStone G1–G6) | Jan 2026 – present | red1oon/BIMCompiler |
2,340 total | 🟡 Maintenance / proof-only — superseded as the runtime, retained as the round-trip proof (gates stable since May 2026) and as the ERP-engine source (build/erp/). |
| Browser pivot → BIM OOTB (Three.js + sql.js + web-ifc) | Apr 2026 | red1oon/BIMCompiler (S195–S271) |
within the 2,340 above | ✅ Folded forward into bim-ootb. |
| bim-ootb (BIM viewer + Kernel-ERP, DAGeVu, Connect Scene) | May 2026 – present | red1oon/bim-ootb |
717 total | ✅ Active / live — the shipping product. |
Monthly commit + fix activity¶
red1oon/IfcOpenShell feature/IFC4_DB — Federation (commits authored by red1oon)
| Month | Commits | Fix/bug commits | Feat/add commits |
|---|---|---|---|
| 2025-10 | 60 | 24 | 39 |
| 2025-11 | 161 | 75 | 68 |
| 2025-12 | 128 | 56 | 77 |
| 2026-01→03 | 13 | — | — |
| 2026-04 | 52 | — | — |
| Total | 414 | — | — |
red1oon/BIMCompiler (first commit 2026-01-25)
| Month | Commits | Fix/bug commits | Feat/add commits |
|---|---|---|---|
| 2026-01 | 30 | 7 | 9 |
| 2026-02 | 280 | 60 | 8 |
| 2026-03 | 717 | 99 | 44 |
| 2026-04 | 422 | 110 | 44 |
| 2026-05 | 521 | 195 | 223 |
| 2026-06 | 370 | 39 | 171 |
| Total | 2,340 | — | — |
red1oon/bim-ootb (first commit 2026-05-23)
| Month | Commits | Fix/bug commits | Feat/add commits |
|---|---|---|---|
| 2026-05 | 365 | 224 | 116 |
| 2026-06 | 352 | 89 | 224 |
| Total | 717 | — | — |
Fix/feat counts are git log --grep matches on commit subjects (fix|bug, feat|add),
case-insensitive.
Do the fix + feat numbers add up to the "net real work"? No — read them as a texture, not a total.
They are keyword matches on the commit subject line, so they (a) miss work whose subject said
refactor, perf, optimize, docs, wire, bake; (b) double-count nothing but also credit
nothing for size — a one-line typo fix and a 2,000-line feature each count as one; and (c) include
the occasional Revert/merge that is motion, not progress. The honest "net work done" signal is the
total commit count — each commit is one resolved, committed unit — with the fix/feat split telling
you how the effort leaned that month (e.g. Nov 2025 was fix-heavy = stabilising; May–Jun 2026 swung
feat-heavy = building). Lines-changed would be a finer measure, but commit-count is the one that
doesn't lie about effort.
2025 — the Federation year (where the hell was, and what it taught)¶
The whole idea was proven the hard way, inside Blender, across three intense months — 349 commits, Oct–Dec 2025. This is the part the later browser work stands on.
-
October (60 commits) — birth, and the unit war. The federation module, BBox semantic geometry, a three-stage inference loader, material inference, GPU instancing, database-driven clash detection. The recurring enemy was coordinates: "database uses meters not millimetres", "Fix critical scale bug (1000× error)", multi-layer viewport offset fixes. Pinning units and the site offset was the precondition for anything to render true — a lesson that carried straight into the browser viewer. It culminates 2025-10-30 in "Full IFC4 database extraction and loading — MILESTONE": IFC is now a queryable SQLite DB.
-
November (161 commits — the heaviest, hardest month) — stability and speed hell. A "template explosion crash" in the loaders. A full week (Nov 2–3) wrestling gizmo click-crashes, registration, and context-menu handling. R-tree clash bugs. And a long string of brute optimisations — "20-30× faster reload", "5-10× speedup for routing and clash" — fighting Blender's evaluation cost at scale. The reward came first, on Nov 1: "Instant GPU bbox preview + two-button workflow (BREAKTHROUGH!)" — the two-stage load (cheap bbox preview, then full geometry) that made big scenes feel instant. This month is why the eventual ceiling was recognised so quickly later: it was a month of finding exactly where Blender stopped scaling.
-
December (128 commits) — pushing the schema past IFC, as a learning exercise. River IoT and PDF terrain were deliberate exercises — not a product line — run to learn how far the database-as-scene-data idea could stretch: OpenStreetMap river import, GPS/affine calibration, mangrove-islet monitoring, a carbon-credit/biochar pipeline, KML/Google-Earth export, terrain topology from PDF survey data. The takeaway wasn't the river; it was the confirmation that anything spatial — geometry, sensors, terrain — folds into the same queryable DB. That generalisation is what later made a building → procurement-order fold feel natural.
The through-line: 2025 proved the schema was the asset and Blender was only ever a renderer. Five months of Blender ceilings made the April 2026 browser pivot obvious rather than risky.
Status of each runtime — what changed, and why¶
-
Federation / Blender / Bonsai (🔵 upstream, still live — the author moved on, the work didn't die). The federation branch lives in the IfcOpenShell community and remains usable. What changed was the author's own path: the original target was city-scale BIM federation inside Blender, and two hard ceilings made that the wrong runtime for him — Geometry Nodes hung the viewport at ~500 modifier trees (S175), and the
.blendbake/save pipeline cost ~45 min per city and required every user to install and configure Blender. So at S195 (2026-04-18) he migrated to a browser-only SQLite WASM runtime. What carried forward: the SQLite geometry schema — the BLOB didn't care whether Python/Blender or JavaScript/browser deserialised it. Calling Federation "dropped" would be inaccurate; it's a handoff, not a death. -
Java/Maven compiler (🟡 not dropped — demoted). It is no longer the runtime, but it is not dead: the RosettaStone G1–G6 gates remain the authoritative proof that the pipeline round-trips IFC → BOM → compile → reconstruct losslessly, and
build/erp/here is still the ERP-engine source of truth. Characterise it as proven and in maintenance, not deprecated. Do not reinvent its proofs in JS. -
Everything browser-native (✅ active). All current development is in
bim-ootb.
Sources¶
docs/VibeProgramming.md— full narrative + the S165→S231 turning-point tabledocs/ROADMAP.md— shipped feature list (S200–S271)bim-ootb/README.md§history — the split-out accountgit log/git rev-liston both repos (run 2026-06-22) — all commit/fix counts- IfcOpenShell
feature/IFC4_DBbranch commits — Federation origin dates