- Responsive font sizes with clamp()
- Shorter navigation labels (Explorer, Upload, Console, Health, Pilot, Ready)
- Developer Mode -> Dev
- Flex wrap for mobile screens
- Smaller padding and gaps
Tested on pilot.landvex.com
- Semantic: What is the object?
- Spatial: Exactly where?
- Temporal: When observed and how changed?
Rich geometry support from start:
- SpatialContext: facade, floor, zone, height, lane, direction
- Geometry: point, polygon, line with coordinates
- CameraPose: position, heading, pitch, roll
Precision in 4 steps: GPS -> triangulation -> 3D -> history
Stronger Decision Cases with exact location
Vision: Continuously updated georeferenced knowledge model
Next: Pilot 001
- API running on port 3002
- UI running on port 3003
- Version endpoint: /version
- Health check: /health
- Platform Readiness: Mission Import ✅, Artifact Registry ✅,
Storage ✅, Operations ✅, Developer Mode ✅
Go Live Checklist updated with current status.
Docker Compose configured (ports adjusted for existing services).
Next: Pilot 001 — Break the system!
Test: bad coverage, large videos, interrupted upload,
multiple phones, bad GPS, darkness, rain, poor lighting.
- Go Live Checklist for LandveX Internal Pilot deployment
- Version endpoint: /version returns environment, version, commit, build
- Ready for Internal Pilot deployment
Next: Deploy with Docker Compose
- 4 roles: SuperAdmin, Operator, Reviewer, PilotUser
- Capabilities (not pages): mission.create, artifact.view, decision.approve, etc.
- Feature flags: ENABLE_REPLAY, ENABLE_MODEL_TRAINING, etc.
- Developer Mode toggle in UI (activated by permission)
- New rule: All features must link to module, capability, and role
Next: Deploy pilot environment
- Fältfas: område, varför, infrastruktur, förväntade objekt, tid, problem
- Teknisk fas: session, mission, artifacts, upload, metadata, explorer, viewer
- Beslutsfas: rätt observation, evidens, beslut, varför inte
- Utvärdering: tid, osäkerhet, automation, värde, nästa steg
- Golden Mission-knapp för att markera #0001
Mål: Kan vi gå från verklighet till verifierat Decision Case utan
manuella genvägar?
Stoppregel: Ingen ny arkitektur förrän Pilot 001 genomfört.
Next: Starta Pilot 001 — film, upload, verifiera
- Field Console: 4 tabs (Upload, Queue, Artifact Viewer, Timeline)
- Health Dashboard: system pulse for 6 engines
- No more ADR documents until MVP-0 proven with real mission
Stoppregel: Ingen ny arkitektur förrän första verkliga uppdraget.
Next: Pilot 001 — First real field upload
- Dataset Explorer: list missions with processing status
- Artifact Viewer: mission details, metadata, processing status
- Mission Upload: simple video upload form
- React + Vite + React Router
- Proxy to API at localhost:3000
MVP-0 Acceptance Criteria:
✅ Upload video
✅ Create mission
✅ View mission in Dataset Explorer
✅ View artifact details
✅ See processing status
No AI. Just file transfer, storage, metadata, registry.
Next: Pilot 001 — First real field upload
- LANDVEX_PLATFORM_ARCHITECTURE.md: Five Engines (Reality, Knowledge,
Decision, Mission, Economic)
- Credit: first-class economic object with types (mission, validation,
training, priority, emergency)
- IntelligenceLedger: tracks value creation separate from financial accounting
- KnowledgeGap: missing information that drives missions
- Hotspot: composite score for mission generation
- Contradiction: conflicting information as opportunity
Key principle: Every component answers 'What value is created here?
Who pays for it?'
Next: PR-005A — Minimal Mission Import UI for MVP-0
- LANDVEX_PLATFORM_ARCHITECTURE.md: Five Engines (Reality, Knowledge,
Decision, Mission, Economic)
- Credit: first-class economic object with types (mission, validation,
training, priority, emergency)
- IntelligenceLedger: tracks value creation separate from financial accounting
- KnowledgeGap: missing information that drives missions
- Hotspot: composite score for mission generation
- Contradiction: conflicting information as opportunity
Key principle: Every component answers 'What value is created here?
Who pays for it?'
Next: PR-005A — Minimal Mission Import UI for MVP-0
- POST /api/v1/missions/import — multipart upload with video
- GET /api/v1/missions/:id — retrieve mission
- GET /api/v1/missions — list active missions
- Express + multer for file handling
- Uses application layer handlers (PR-002.5)
- In-memory repositories (swap for PostgreSQL in PR-003B)
Acceptance Tests (5/5 passing):
✅ Import mission with video
✅ Reject upload without video
✅ Retrieve mission by ID
✅ 404 for non-existent mission
✅ Health check
MVP-0 Definition of Done:
✅ Phone → Upload → Store → Retrieve
✅ No AI required
✅ First real artifact produced
Next: PR-005A — Minimal Mission Import UI
- Repository interfaces defined by domain (@landvex/domain)
- 6 in-memory adapters: Session, Mission, DecisionCase, Artifact, EventStore, UnitOfWork
- 9 tests verifying adapter contracts
- Domain unchanged — infrastructure depends on domain, never reverse
- ADR-006: In-Memory Adapters for Testing
Definition of Done met:
- All adapters compile against domain interfaces
- Unit tests pass (9/9)
- No PostgreSQL, S3, Express, AI in this PR
- Ready for PR-003: PostgreSQL adapters
- @landvex/domain package with TypeScript strict mode
- 3 Aggregate Roots: FieldSession, Mission, DecisionCase
- Branded IDs, Value Objects, Domain Events, Invariants
- 19 unit tests for IDs, FieldSession, DecisionCase
- Zero runtime dependencies (only TypeScript + jest for tests)
- Separates Entity / Value Object / Aggregate Root
- README documents Three Rules of the domain
Definition of Done met:
- Compiles without errors
- Exports all domain types
- Unit tests for invariants and value objects
- No PostgreSQL, S3, Express, AI models, queues