Backend verification console

ETOGO Property Twin Engine

This shows the backend that runs underneath the property viewer: the neutral core from Milestone 1, plus the full 17-step controlled lifecycle built on top of it. The 3D viewer you'll eventually walk through room by room is Milestone 4, and it hasn't been built yet. Everything below is real: every button calls the live API and shows you the response.

What this console proves

The neutral core, built first: proprietary scan files enter through pluggable adapters, so the engine isn't locked to one scanner. The resulting twins and property facts live in open, exportable formats. Nothing is deleted, only versioned, and the property facts registry is append-only.

On top of that core sits the client's 17-step controlled lifecycle. A version gets a spatial map (building, floor, unit, space, zone) and a systems map (system, sub-system, component). An anchor pins a point to both maps at once. An observation and its measurements get recorded against that anchor. Evidence gets captured and cited. A hypothesis and a materiality rule turn that evidence into a finding, and the finding has to be reviewed before anyone can recommend a fix. The fix gets costed and authorized before a work order can exist. The work gets executed and verified, and a verified completion fact publishes a new twin version on its own. Every one of those transitions writes an entry to the append-only registry, so the whole chain stays auditable.

Two of the steps below try to skip a gate on purpose. The API is expected to refuse them with an HTTP 409, and that refusal is styled green because it's the correct outcome, not a failure of the demo.

The data model

Static reference: the shape every record below gets created against.

Foundation

Property
Twin
Version (immutable once published)

Spatial map, per version

Building
Floor
Unit
Space
Zone

Systems map, per twin (persists across versions)

System
Sub-system
Component

Anchors, observations and evidence

Spatial anchor (dual: space + component)
Observation
Measurement
Evidence
Citation

Reasoning

Hypothesis
Rule
Materiality threshold

Finding, reviewed before it can move forward

Finding
gate: reviewed
Recommendation
Qualified deliverable

Cost, authorization and work

Cost-benefit analysis
Authorization
gate: authorized
Work order
Cost item

Execution and verification

Execution
Completion evidence
gate: evidence attached
Verification

Completion, feeding back into a new version

gate: verification passed
Completion fact (registry)
triggers
Version 2 (published)
Registry event (append-only, written at every gate above)
Monitor
Reading
Alert

A Property has many Twins. A Twin holds a chain of immutable Versions, a systems map that persists across versions, and a pointer to the current version. Each Version carries its own spatial map, its own anchors, and everything reasoned from them. A completion fact is the only thing that can trigger a new Version, and only after a verification actually passed. Every gate transition writes to the append-only registry event log, whether it succeeds or gets refused.

Live demonstration

Every button below calls the live, same-origin JSON API and shows the response beneath it. A "blocked" outcome on a gate or immutability step is the correct result, and it's styled green.

Reset walks the whole lifecycle graph for the demo property (spatial and systems maps, anchors, evidence, findings, work orders, the registry log, everything) and removes it. Rule and materiality threshold definitions are left in place on purpose: they're reusable reference data, not per-run demo state, the way a real inspector would reuse the same rule across properties.

Automated test evidence

Static reference to the test suite. Run it with php artisan test.

✓ 48 tests passing · 164 assertions