What Milestone 1 built
This is the neutral core: proprietary scan files enter the system through pluggable adapters, so the engine is never locked to one scanner or vendor. The resulting twins and property facts are stored in open, exportable formats: nothing proprietary, nothing you can't take with you. And nothing is ever destructively deleted: twins are only ever versioned, and the property facts registry is append-only. Everything below is that engine, running against the live database, not a mockup.
The data model
Static reference: the shape every record below is created against.
A Property has many Twins. A Twin has a chain of immutable Versions and a pointer to the current one. A Version has Spaces (rooms), which have Findings, which have Evidence. Separately, a Property has an append-only Facts Registry. Entries are written once and never edited.
Live demonstration
Every button below calls the live, same-origin JSON API and shows the response beneath it. A "blocked" outcome on the delete/modify steps is the correct result, and it's styled green.
Automated test evidence
Static reference to the test suite. Run it with php artisan test.
- VersioningTest: version numbers increment sequentially; publishing moves the current-version pointer while keeping the old version; a published version throws on update and on delete; a draft version can still be edited.
- PropertyFactsRegistryTest: append() writes a checksummed fact; update and delete on a fact both throw; the registry service exposes no update/delete method at all.
- AdapterRegistryTest: the reference adapter is discoverable by format; the ingestion path drives validate() → ingest() and produces a job plus a draft version; an unsupported format resolves no adapter.
- TwinStorageTest: stored models are content-addressed and checksummed; export() writes an open-format manifest proving the twin and registry are exportable.
- PropertyTwinApiTest: the full create-property → twin → version → publish happy path over the live API; validation rejects a nameless property; spaces/findings/facts flow end to end.