898 lines
29 KiB
Markdown
898 lines
29 KiB
Markdown
# Lardon3D — Canonical Roadmap
|
|
|
|
This roadmap defines the current dependency order and lifecycle of Lardon3D.
|
|
|
|
Detailed scientific, persistence and runtime contracts remain owned by the canonical documents under
|
|
`docs/architecture/`. This file records what is acquired, what is current, what is next, and what is
|
|
deliberately deferred.
|
|
|
|
It must not be used to reinterpret FROZEN scientific evidence.
|
|
|
|
## Current repository state
|
|
|
|
```text
|
|
Project DB current schema v25
|
|
Production Task kinds 16
|
|
GLOBAL_MAINTENANCE_AUDIT PASS/FROZEN
|
|
REAL_S21_TRACKS PASS/FROZEN
|
|
REAL_A6000_PRE_SFM PASS/FROZEN
|
|
Sparse SfM capability Gates A-G PASS/FROZEN
|
|
Real A6000 Sparse SfM NOT EXECUTED
|
|
Real A6000 Dense/MVS NOT EXECUTED
|
|
DOCUMENTATION_FINDING_REMEDIATION PASS
|
|
SOURCE_COMMENT_AUDIT PASS
|
|
PRODUCT_DEFINITION PASS/FROZEN
|
|
PROMPT_TREE CURRENT
|
|
USER_FACING_UI_LANGUAGE_NORMALIZATION PASS
|
|
CURRENT_NEXT CALIBRATION_WORKFLOW_COORDINATOR
|
|
```
|
|
|
|
The current Project DB head is additive:
|
|
|
|
```text
|
|
v22 selected scientific execution foundation
|
|
v23 generic optical-context overlay
|
|
v24 raw.develop.batch/1 persistence
|
|
v25 features.extract.batch/1 persistence
|
|
```
|
|
|
|
Historical references to earlier versions remain valid when they describe the state of their own
|
|
checkpoint. They are stale only when they claim to describe the current head.
|
|
|
|
## Canonical resource policy — HUMAN AUTHORITY
|
|
|
|
Production execution follows:
|
|
|
|
```text
|
|
MAXIMUM SAFE USEFUL THROUGHPUT
|
|
SERIALISM_REQUIRES_PROOF
|
|
```
|
|
|
|
Lardon3D preserves the interactive host reserve first, then uses the maximum remaining resources that
|
|
are both safe and useful for the admitted workload.
|
|
|
|
The interactive reserve exists to preserve normal use of:
|
|
|
|
- Arch Linux / Sway and normal desktop services;
|
|
- Firefox;
|
|
- normal audio playback;
|
|
- lightweight interactive workstation use.
|
|
|
|
On the current validation host, the normal observed outcome is approximately:
|
|
|
|
```text
|
|
16 logical CPUs total
|
|
4 logical CPUs reserved for interactive host use
|
|
12 logical CPUs available to the compute pool
|
|
~3 GiB MemAvailable preserved as the hard RAM reserve
|
|
Radeon 780M UMA available to validated and useful GPU backends
|
|
```
|
|
|
|
These values are reference-host evidence, not portable product constants.
|
|
|
|
A future host with more compute capacity must not inherit the current 12-thread result as a ceiling.
|
|
The Resource Governor derives admission from the actual affinity, topology, memory state, pressure,
|
|
backend capability and Task envelope.
|
|
|
|
Per-item atomicity does not imply cross-item serialization.
|
|
|
|
Owner-only or ordered durable publication does not imply serial preparation.
|
|
|
|
A long-running `CPU1` or `batch1` path with independent work and safe idle capacity is an operational
|
|
defect unless concrete evidence establishes a real limit such as:
|
|
|
|
- scientific or dependency serialism;
|
|
- a measured useful-scaling knee;
|
|
- memory pressure or a truthful memory bound;
|
|
- I/O saturation;
|
|
- a validated GPU path that makes additional CPU work useless;
|
|
- a deterministic publication constraint that cannot safely be separated from preparation;
|
|
- another explicit measured resource limitation.
|
|
|
|
The Resource Governor remains the sole production resource authority.
|
|
|
|
Normal users do not select CPU count, worker count, batch size, inflight depth, GPU backend, scratch
|
|
mode or RAM budget for authoritative execution.
|
|
|
|
Validated and useful GPU backends are preferred automatically when eligible. A GPU backend must not
|
|
be invented or promoted merely to create GPU activity.
|
|
|
|
Swap, zram and scratch are pressure/safety or storage mechanisms. They are never admitted RAM. UMA
|
|
GPU memory is charged exactly once against host RAM.
|
|
|
|
Pressure may reduce admission. When pressure clears, safe and useful resources must be admitted again
|
|
rather than remaining permanently throttled.
|
|
|
|
The same philosophy applies to engineering work: independent builds, tests, benchmarks and real-data
|
|
proofs should use safe host-aware parallelism. Historical fixed values such as `-j8` or
|
|
`--num-processes 1` are not universal policy.
|
|
|
|
## Acquired FROZEN foundations
|
|
|
|
The following major boundaries are acquired at the scope defined by their canonical documents:
|
|
|
|
- Sparse SfM Gates A-G — PASS/FROZEN;
|
|
- F0 — PASS/FROZEN;
|
|
- Track Model — PASS/FROZEN;
|
|
- Track Builder scientific contract — PASS/FROZEN;
|
|
- Phase H v1 incremental multi-snapshot enrichment — PASS/FROZEN;
|
|
- MVS-M1 external OpenMVS v2.4.0 boundary — PASS/FROZEN;
|
|
- Capture / Asset Provenance — PASS/FROZEN;
|
|
- Capture-safe Standard Ingestion — PASS/FROZEN;
|
|
- Capture / Acquisition Ingestion — PASS/FROZEN;
|
|
- Durable Acquisition-Campaign Execution — PASS/FROZEN;
|
|
- Selected Scientific Execution — PASS/FROZEN;
|
|
- Photo Quality Triage / Acquisition Selection — PASS/FROZEN;
|
|
- Calibration Bootstrap v1 — PASS/FROZEN;
|
|
- Calibration Science v1 — PASS/FROZEN;
|
|
- Calibration Tooling v1 — PASS/FROZEN;
|
|
- Internal Parallelism + Compute Resources v1 — PASS/FROZEN;
|
|
- Compute Governor v2 — PASS/FROZEN;
|
|
- ORB Vulkan asynchronous execution — PASS/FROZEN;
|
|
- Global Maintenance Audit — PASS/FROZEN;
|
|
- Real S21 Tracks — PASS/FROZEN;
|
|
- Real A6000 pre-SfM — PASS/FROZEN.
|
|
|
|
A FROZEN boundary is not reopened merely because a later operational document, benchmark or roadmap
|
|
section is updated.
|
|
|
|
## Capture and acquisition foundation
|
|
|
|
The acquisition model preserves distinct identities:
|
|
|
|
```text
|
|
Capture != file
|
|
Capture != asset
|
|
Capture != image_id
|
|
Capture != SHA-256
|
|
Capture != basename
|
|
Capture != Task ID
|
|
Capture != campaign group ID
|
|
```
|
|
|
|
`capture_id` identifies the physical acquisition representation recorded in Project DB.
|
|
|
|
`image_id` identifies a scientific image representation.
|
|
|
|
SHA-256 identifies immutable asset bytes.
|
|
|
|
Task and campaign-group IDs are operational identities and never redefine the scientific Capture.
|
|
|
|
The acquisition pipeline remains conceptually:
|
|
|
|
```text
|
|
explicit acquisition sources
|
|
-> bounded discovery / metadata
|
|
-> acquisition candidates and explicit confirmations
|
|
-> Photo Quality Triage
|
|
-> explicit acquisition selection / human override
|
|
-> durable campaign execution
|
|
-> Capture / Asset provenance
|
|
-> selected scientific representation
|
|
-> downstream scientific pipeline
|
|
```
|
|
|
|
A6000 RAW+JPEG pairs confirmed by the caller are `CALLER_EXPLICIT`, never silently upgraded to
|
|
scientifically `STRONG` evidence.
|
|
|
|
Historical S3 and Project DB v19/v20 evidence remains valid for the lifecycle it recorded. Its
|
|
historical crash-window limitations must not be rewritten as if later durable execution semantics
|
|
already existed at that checkpoint.
|
|
|
|
## Photo Quality Triage / Acquisition Selection — PASS/FROZEN
|
|
|
|
Photo Quality Triage operates on existing acquisition groups before normal campaign materialization
|
|
and before scientific representation, Feature extraction, matching, SfM or MVS.
|
|
|
|
It produces explainable recommendations:
|
|
|
|
```text
|
|
GOOD
|
|
SUSPECT
|
|
REJECT
|
|
```
|
|
|
|
These are operational recommendations, not identities and not source deletion.
|
|
|
|
A6000 RAW+JPEG acquisition pairs are one triage unit. A valid camera JPEG is the preferred fast
|
|
quality proxy, while the FROZEN A6000 geometry representation for the retained selected execution
|
|
remains the deterministic RAW-derived PNG.
|
|
|
|
A S21 singleton JPEG is naturally usable as its quality-analysis representation.
|
|
|
|
Quality selection never permits silent scientific calibration inference or silent replacement of the
|
|
selected geometry representation.
|
|
|
|
## Selected scientific execution — PASS/FROZEN
|
|
|
|
Selected scientific execution freezes the exact ordered set of selected acquisition items and their
|
|
scientific representation policy.
|
|
|
|
For the retained A6000 Engine Bay execution:
|
|
|
|
```text
|
|
quality selection
|
|
-> durable selected execution
|
|
-> deterministic RAW development
|
|
-> Feature extraction
|
|
-> Visual Index
|
|
-> Candidate Pair generation
|
|
-> Matcher
|
|
-> Geometric Verification
|
|
-> Tracks
|
|
-> STOP before real Sparse SfM
|
|
```
|
|
|
|
The paired camera JPEG remains a valid SOURCE asset and fast quality proxy.
|
|
|
|
The geometry representation remains the deterministic RAW-derived PNG identified by the established
|
|
RAW policy and `L3DRAWD1`.
|
|
|
|
Replacing that geometry representation with camera JPEG requires a separately authorized scientific
|
|
and calibration equivalence proof.
|
|
|
|
## Project DB evolution
|
|
|
|
### v22 — selected scientific execution foundation
|
|
|
|
Project DB v22 owns the selected scientific execution foundation and associated persistence semantics.
|
|
|
|
It remains PASS/FROZEN.
|
|
|
|
### v23 — generic optical-context overlay
|
|
|
|
Project DB v23 adds generic optical context without rewriting historical scientific rows.
|
|
|
|
It supports explicit camera-body profiles, lens profiles, optical configurations, campaign/Capture
|
|
assignments and exactly compatible calibration selection.
|
|
|
|
Manual lenses without EXIF are normal supported equipment.
|
|
|
|
No silent lens identity inference, calibration substitution, interpolation or backfill is allowed.
|
|
|
|
### v24 — RAW batch persistence
|
|
|
|
Project DB v24 adds typed persistence for:
|
|
|
|
```text
|
|
raw.develop.batch/1
|
|
raw_development_batch_tasks
|
|
```
|
|
|
|
The production pattern is:
|
|
|
|
```text
|
|
one Governor-admitted owner Task
|
|
-> bounded independent RAW participants
|
|
-> join all participants
|
|
-> deterministic owner-only publication
|
|
-> ordered selected-execution cursor advancement
|
|
```
|
|
|
|
Per-Capture atomicity remains preserved while independent Captures may be prepared concurrently.
|
|
|
|
The retained real A6000 proof completed the RAW-batch path. Project DB v24 is therefore no longer in validation.
|
|
|
|
### v25 — Feature batch persistence
|
|
|
|
Project DB v25 is the current schema head.
|
|
|
|
It adds typed persistence for:
|
|
|
|
```text
|
|
features.extract.batch/1
|
|
feature_extract_batch_tasks
|
|
```
|
|
|
|
The historical `features.extract/1` path remains valid.
|
|
|
|
The batch path preserves per-image scientific atomicity while allowing bounded cross-image
|
|
preparation. Durable publication, cursor advancement and checkpoint ordering remain owner-controlled
|
|
and deterministic.
|
|
|
|
The retained real A6000 proof completed the Feature-batch path. v25 is therefore no longer
|
|
"validation in progress".
|
|
|
|
## Historical A6000 v24 cursor checkpoint — SUPERSEDED CURRENT STATE
|
|
|
|
The following state is retained only as historical progress evidence:
|
|
|
|
```text
|
|
Project
|
|
/home/fy59/Documents/Lardon/.real-pre-sfm-2026-09-01/a6000-pre-sfm-v23-final
|
|
|
|
Schema v24
|
|
Captures 953
|
|
GOOD 689
|
|
SUSPECT 206
|
|
REJECT 58
|
|
selected_execution 1
|
|
selected items 689 RAW_ASSET
|
|
published representations 259
|
|
next_item_index 259
|
|
remaining RAW representations 430
|
|
Features 0
|
|
Visual Index 0
|
|
Candidate 0
|
|
Matcher 0
|
|
GV 0
|
|
Tracks 0
|
|
Sparse SfM 0
|
|
Dense/MVS 0
|
|
```
|
|
|
|
This snapshot must never be presented as CURRENT NEXT.
|
|
|
|
The remaining 430 RAW representations were later completed, followed by Feature extraction, Visual
|
|
Index, Candidate Pair generation and Matcher. The project subsequently advanced to the final
|
|
`REAL_A6000_PRE_SFM=PASS/FROZEN` checkpoint below.
|
|
|
|
The historical source-inventory digest remains:
|
|
|
|
```text
|
|
fa725d8a82b529521134dd600b5cf42ed58ad523108636741a1431441e17b029
|
|
```
|
|
|
|
## Global Maintenance Audit — PASS/FROZEN
|
|
|
|
Canonical maintenance checkpoint:
|
|
|
|
```text
|
|
tag global-maintenance-2026-09-01
|
|
commit b84f860d868c66d9ee84b85ceb1bc6480b95aca5
|
|
```
|
|
|
|
Detailed evidence is retained in
|
|
[Global Maintenance Audit](../architecture/global_maintenance_audit.md).
|
|
|
|
Future reviews are delta-based from this checkpoint for unchanged FROZEN systems:
|
|
|
|
```sh
|
|
git diff global-maintenance-2026-09-01...HEAD
|
|
```
|
|
|
|
A later checkpoint may add evidence without erasing this maintenance authority.
|
|
|
|
The maintenance audit must not be repeated A-to-Z without concrete evidence that an unchanged
|
|
boundary needs to be reopened.
|
|
|
|
## Real S21 Tracks — PASS/FROZEN
|
|
|
|
```text
|
|
REAL_S21_TRACKS=PASS/FROZEN
|
|
```
|
|
|
|
Retained source project:
|
|
|
|
```text
|
|
/home/fy59/Documents/Lardon/.real-pre-sfm-2026-08-31/s21-gv-v3
|
|
```
|
|
|
|
The retained real proof contains:
|
|
|
|
```text
|
|
Feature Sets 2,826
|
|
Candidate Pairs 172,741
|
|
Match Results 172,741
|
|
GVR v3 172,275
|
|
GEOMETRIC_VERIFIED 24,065
|
|
GEOMETRIC_REJECTED 148,210
|
|
Track Sets 1
|
|
Tracks 912,447
|
|
Track observations 2,495,768
|
|
Track length min/max 2/42
|
|
```
|
|
|
|
Canonical persistent Track digest:
|
|
|
|
```text
|
|
c30eba192627bf73eaf21ff30d81038d8cc6bbf36a69226f88cdc8c37f7d74a1
|
|
```
|
|
|
|
The historical 18.204 GiB Track Builder envelope is retained only as rejected historical evidence.
|
|
The validated compact memory model supersedes it operationally.
|
|
|
|
The proof used no scratch lease.
|
|
|
|
Sparse SfM and Dense remained unexecuted in this retained real S21 Tracks checkpoint.
|
|
|
|
## Real A6000 pre-SfM — PASS/FROZEN
|
|
|
|
Canonical later checkpoint:
|
|
|
|
```text
|
|
tag real-a6000-pre-sfm-2026-09-02
|
|
REAL_A6000_PRE_SFM=PASS/FROZEN
|
|
```
|
|
|
|
Authoritative durable project:
|
|
|
|
```text
|
|
/home/fy59/Documents/Lardon/.real-pre-sfm-2026-09-01/a6000-pre-sfm-v23-final
|
|
```
|
|
|
|
The directory name is historical. The current Project DB inside the retained final project is v25.
|
|
|
|
The continuation reused the already acquired upstream results:
|
|
|
|
```text
|
|
ACQUISITION_REPLAY=0
|
|
RAW_REPLAY=0
|
|
FEATURE_REPLAY=0
|
|
VISUAL_INDEX_REPLAY=0
|
|
CANDIDATE_REPLAY=0
|
|
MATCHER_REPLAY=0
|
|
```
|
|
|
|
Final retained counts:
|
|
|
|
```text
|
|
Selected images 689
|
|
Feature Sets 689
|
|
Candidate Pairs 38,420
|
|
Match Results 38,420
|
|
Applicable GVR 37,805
|
|
GEOMETRIC_VERIFIED 10,952
|
|
GEOMETRIC_REJECTED 26,853
|
|
Track Sets 1
|
|
Tracks 130,714
|
|
Track observations 318,944
|
|
```
|
|
|
|
Geometric Verification v3 fingerprint:
|
|
|
|
```text
|
|
6944a471d611d8ffc59dac7cf15a5b79b97e2371d4c51785c477d68c1577f74c
|
|
```
|
|
|
|
The GV continuation completed its durable Match Result cursor and produced zero duplicate GVR
|
|
mappings.
|
|
|
|
Track Builder published one atomic Track Set. SQL audit established:
|
|
|
|
```text
|
|
duplicate Track observations 0
|
|
repeated-image Tracks 0
|
|
orphan Track observations 0
|
|
```
|
|
|
|
The restart continuation traversed the already completed GVR cursor, produced zero new GVRs and
|
|
reused Track Set 1 without creating duplicate Tracks.
|
|
|
|
The retained Governor evidence includes:
|
|
|
|
```text
|
|
admissions 2,714
|
|
compute-pool CPUs 12
|
|
interactive CPU reserve 4
|
|
final GV window 16
|
|
swap-in delta 0
|
|
swap-out delta 0
|
|
```
|
|
|
|
The reference-host CPU counts are evidence, not portable constants.
|
|
|
|
This checkpoint explicitly stopped with:
|
|
|
|
```text
|
|
sparse_sfm_tasks 0
|
|
sparse_reconstructions 0
|
|
Dense/MVS 0
|
|
multi-campaign fusion 0
|
|
```
|
|
|
|
Therefore this checkpoint proves the A6000 pre-SfM boundary only.
|
|
|
|
It does not authorize inferred calibration or imply that real Sparse SfM has run.
|
|
|
|
## Calibration status
|
|
|
|
Historical S21 and A6000 Engine Bay campaigns remain `CALIBRATION_UNAVAILABLE` for the known-
|
|
calibration Sparse SfM contract.
|
|
|
|
This status does not mean source failure, image-quality rejection or software failure.
|
|
|
|
It forbids bypassing the scientific requirement through:
|
|
|
|
- pseudo-calibration;
|
|
- EXIF-as-calibration;
|
|
- silent metadata interpolation;
|
|
- silent lens identity inference;
|
|
- silent calibration substitution.
|
|
|
|
The resulting historical-campaign state remains:
|
|
|
|
```text
|
|
BLOCKED_BY_KNOWN_CALIBRATION_DATA
|
|
```
|
|
|
|
S21 Engine Bay is permanently non-retro-calibrable under Calibration Science v1.
|
|
|
|
Calibration Science v1 defines the physical protocol for future calibration acquisitions.
|
|
|
|
Calibration Tooling v1 consumes an already acquired Science v1 evidence bundle, validates the bounded
|
|
contract and produces deterministic `L3DCALB1` v1.
|
|
|
|
Calibration Bootstrap v1 imports the explicit artifact.
|
|
|
|
Calibration Evidence Solver v1 implements the external OpenCV 5.x evidence path selected by
|
|
Calibration Solver Preflight v1. It remains outside the Lardon3D runtime and Project DB and its
|
|
deterministic synthetic CPU1 self-test is validated.
|
|
|
|
The solver session contract now also requires explicit measured `white_border >= 30 mm` evidence. This closes the previous gap between the physical target requirement and the future coordinator input; no default border width is inferred.
|
|
|
|
A bounded Tooling correction aligned planarity handling with Calibration Science v1: Science v1
|
|
defines a categorical physical planarity attestation, not a numeric flatness threshold. Tooling
|
|
therefore rejects invented finite `target_flatness_mm` values. `L3DCALB1` v1 and Calibration
|
|
Bootstrap remain unchanged.
|
|
|
|
The current implementation dependency is the calibration workflow coordinator:
|
|
|
|
```text
|
|
immutable session.l3dcal
|
|
+ detection.json
|
|
+ solve.json
|
|
+ evidence.json
|
|
+ exact selected execution
|
|
+ exact optical state
|
|
-> bounded Calibration Tooling evidence
|
|
-> L3DCALB1 v1
|
|
-> Bootstrap
|
|
-> READY
|
|
```
|
|
|
|
No calibration component silently turns metadata into scientific calibration.
|
|
|
|
## Current engineering work
|
|
|
|
The current repository-maintenance sequence is:
|
|
|
|
```text
|
|
Documentation Inventory Audit PASS_WITH_FINDINGS
|
|
Documentation Finding Remediation PASS
|
|
Source Comment Audit PASS
|
|
Source Comment Remediation PASS
|
|
Product Definition v1 PASS/FROZEN
|
|
Prompt execution contract tree CURRENT
|
|
User-facing UI/control normalization PASS
|
|
-> final usable calibration workflow CURRENT NEXT
|
|
-> each implementation tranche requires explicit human authorization
|
|
```
|
|
|
|
The repository contract phase is complete and the implementation cursor has moved to the final usable calibration workflow.
|
|
|
|
This cursor does not itself authorize:
|
|
|
|
- scientific threshold changes;
|
|
- new Project DB schema versions;
|
|
- new Task kinds;
|
|
- real Sparse SfM execution;
|
|
- Dense/MVS execution;
|
|
- Viewer implementation;
|
|
- live-capture implementation;
|
|
- Capture Guidance implementation.
|
|
|
|
Those boundaries require their own explicitly authorized tranche when reached.
|
|
|
|
## Scientific next dependency
|
|
|
|
The current implementation dependency is the final usable calibration workflow around the already acquired Calibration Science / Tooling / Bootstrap boundaries.
|
|
|
|
The first new real scientific evidence after that workflow exists is a dedicated physical calibration acquisition that satisfies Calibration Science v1.
|
|
|
|
The dependency order is:
|
|
|
|
```text
|
|
final usable calibration workflow
|
|
-> dedicated physical calibration acquisition
|
|
-> external solver evidence
|
|
-> Calibration Tooling v1
|
|
-> L3DCALB1 v1
|
|
-> Calibration Bootstrap v1
|
|
-> explicit compatible optical assignment
|
|
-> READY
|
|
-> real Sparse SfM
|
|
-> reconstruction validation
|
|
-> multi-campaign registration / Phase H where applicable
|
|
-> Dense / MVS
|
|
-> mesh / refinement / texturing
|
|
-> consolidation / export
|
|
```
|
|
|
|
Historical S21/A6000 Engine Bay datasets must not be silently promoted through this sequence if they
|
|
cannot satisfy the frozen calibration contract.
|
|
|
|
## Optional external SSD / scratch
|
|
|
|
The existing external SSD controller is a validated physical boundary.
|
|
|
|
It uses the exact UDisks2 Drive/label/UUID model and the established
|
|
`LARDON_SWAP` / `LARDON_SCRATCH` pairing contract.
|
|
|
|
The controller and Governor integration are:
|
|
|
|
```text
|
|
CURRENT / VALIDATED OPERATIONAL
|
|
```
|
|
|
|
SSD availability does not create Task scratch consumption by itself.
|
|
|
|
Future scratch consumers must have explicit Task ownership and acquire/release scratch only through
|
|
the validated Governor-owned lease contract.
|
|
|
|
Scratch is especially relevant to future dense, mesh, refinement and texturing workloads.
|
|
|
|
Swap remains a safety mechanism and never expands admitted RAM.
|
|
|
|
No automatic formatting, repartitioning, fsck, force-drain or destructive storage action is implied
|
|
by the roadmap.
|
|
|
|
## TUI
|
|
|
|
The TUI is the current operational control center.
|
|
|
|
It owns project workflow, Task observation, durable progress, Resource Governor observation, optical
|
|
configuration and optional SSD controls.
|
|
|
|
The canonical repository and UI language is English.
|
|
|
|
The direct TUI/control surface and user-facing project/import/catalog/runtime-session messages have completed their scoped English normalization and validation pass.
|
|
|
|
Historical persisted labels, path names and deliberate UTF-8 fixtures remain unchanged where translation would alter historical meaning or test purpose. Persistence-sensitive/internal diagnostics are changed only in an explicitly owned scope rather than by mechanical repository-wide replacement.
|
|
|
|
The TUI remains ncurses/main-thread owned according to its canonical contract.
|
|
|
|
Rich geometry visualization is a separate future boundary.
|
|
|
|
## Mixed devices and multiple ScanSets
|
|
|
|
Sony A6000, Samsung S21 and future cameras reuse the same Capture / Asset / scientific-image model.
|
|
|
|
No camera-specific fork of scientific identity is allowed.
|
|
|
|
New cameras and lenses are product onboarding concerns, not reasons to modify scientific source code.
|
|
|
|
Multiple ScanSets and selected representations may feed the existing Phase H enrichment model when
|
|
their scientific prerequisites are satisfied.
|
|
|
|
Raw S21 and A6000 projects must not be casually merged. Each campaign is reconstructed under its own
|
|
valid optical/calibration context, then registered or fused at the scientifically correct stage.
|
|
|
|
## Future product areas
|
|
|
|
The following areas remain future implementation work. Their product requirements are now frozen in [Product Definition v1](../product/product_definition.md); subsystem implementation/scientific contracts remain to be authorized and acquired.
|
|
|
|
### Dense / MVS / mesh / texture / export
|
|
|
|
MVS-M1 freezes the current external OpenMVS boundary.
|
|
|
|
Future work includes:
|
|
|
|
```text
|
|
durable dense execution
|
|
-> restart / resource / scratch ownership
|
|
-> atomic dense publication
|
|
-> mesh
|
|
-> refinement
|
|
-> texturing
|
|
-> consolidation
|
|
-> export
|
|
```
|
|
|
|
The exact publication, identity and recovery contracts must be defined before implementation.
|
|
|
|
### Viewer
|
|
|
|
The future Viewer is a passive consumer of validated project/reconstruction snapshots.
|
|
|
|
Potential visualization includes:
|
|
|
|
- sparse points;
|
|
- dense geometry;
|
|
- mesh;
|
|
- cameras and frustums;
|
|
- Track support;
|
|
- reprojection quality;
|
|
- coverage evidence;
|
|
- weak or unseen regions;
|
|
- holes;
|
|
- per-ScanSet contribution.
|
|
|
|
The final Viewer architecture and UI contract are not yet frozen.
|
|
|
|
### Offline Coverage Analysis
|
|
|
|
Coverage Analysis will estimate where additional photographic evidence is useful.
|
|
|
|
Potential evidence includes:
|
|
|
|
- observation count;
|
|
- angular diversity;
|
|
- parallax;
|
|
- projected resolution;
|
|
- image quality;
|
|
- Feature/Track support;
|
|
- reprojection / triangulation quality;
|
|
- reconstruction confidence;
|
|
- visibility and occlusion;
|
|
- ScanSet provenance.
|
|
|
|
No coverage score, weighting or threshold is currently a scientific contract.
|
|
|
|
### Suggested supplementary viewpoints
|
|
|
|
A future guidance layer may convert weak coverage into recommendations such as:
|
|
|
|
```text
|
|
weak region
|
|
+ current reconstruction evidence
|
|
-> suggested direction / angle / distance / baseline
|
|
```
|
|
|
|
Recommendations must derive from geometric evidence, not filename counts, basename similarity or
|
|
unrelated heuristics.
|
|
|
|
The optimization algorithm is not yet defined.
|
|
|
|
### Live camera localization
|
|
|
|
A live image may eventually be localized against an existing reconstruction through a bounded
|
|
camera-localization path.
|
|
|
|
Likely prerequisites include:
|
|
|
|
- valid camera calibration;
|
|
- an existing sparse reconstruction;
|
|
- live-frame Features;
|
|
- 2D-to-3D correspondences;
|
|
- calibrated pose estimation;
|
|
- pose confidence;
|
|
- graceful tracking loss and reacquisition.
|
|
|
|
No live-localization contract is currently frozen.
|
|
|
|
### Live Coverage / Capture Guidance
|
|
|
|
The target loop is:
|
|
|
|
```text
|
|
existing reconstruction
|
|
-> coverage analysis
|
|
-> weak or missing regions
|
|
-> current camera localization
|
|
-> projection into Live View
|
|
-> operator acquires supplementary images
|
|
-> normal Lardon3D ingestion
|
|
-> reconstruction update
|
|
-> coverage update
|
|
```
|
|
|
|
The operator should ultimately receive actionable guidance about viewpoint, direction, angle,
|
|
distance or baseline rather than only a colored weak region.
|
|
|
|
This remains future product intent, not implemented behavior.
|
|
|
|
### Sony A6000 acquisition boundary
|
|
|
|
The Sony A6000 must remain unmodified.
|
|
|
|
Its native outputs are the intended integration boundary:
|
|
|
|
```text
|
|
A6000 -- HDMI --> capture device --> Live View
|
|
\-- USB --> control / shutter / metadata / RAW+JPEG transfer where supported
|
|
```
|
|
|
|
Heavy reconstruction and analysis remain on the PC.
|
|
|
|
The device-specific adapter may handle transport and control differences, but camera-specific
|
|
transport must not redefine Capture identity or scientific contracts.
|
|
|
|
No firmware hack or hardware modification is part of the product direction.
|
|
|
|
### Samsung S21 acquisition boundary
|
|
|
|
Samsung S21/mobile acquisition will use a device-specific adapter at the acquisition boundary while
|
|
reusing the same Capture, provenance, quality, optics and scientific pipeline.
|
|
|
|
Its exact live transport/control contract remains to be defined.
|
|
|
|
### Video and deterministic keyframes
|
|
|
|
Video is a future acquisition source, not a separate SfM pipeline.
|
|
|
|
The intended shape is:
|
|
|
|
```text
|
|
SOURCE video asset
|
|
-> deterministic timeline / metadata
|
|
-> bounded deterministic keyframe extraction
|
|
-> quality / blur / redundancy filtering
|
|
-> selected frame representations / Capture candidates
|
|
-> existing Lardon3D scientific pipeline
|
|
```
|
|
|
|
Every retained frame must remain traceable to the source video and exact extraction identity.
|
|
|
|
No keyframe selection science is currently frozen.
|
|
|
|
### Optics onboarding
|
|
|
|
The final product must support new camera/lens equipment without source-code changes.
|
|
|
|
Established product intent includes:
|
|
|
|
```text
|
|
NEW_CAMERA_REQUIRES_CODE_CHANGE=NO
|
|
NEW_LENS_REQUIRES_CODE_CHANGE=NO
|
|
ELECTRONIC_LENS_WITH_METADATA=SUPPORTED
|
|
MANUAL_LENS_WITHOUT_EXIF=SUPPORTED
|
|
MULTIPLE_LENSES_PER_CAMERA=SUPPORTED
|
|
ZOOM_MULTIPLE_FOCALS=SUPPORTED
|
|
MULTIPLE_OPTICAL_CONFIGURATIONS_PER_PROJECT=SUPPORTED
|
|
SILENT_CALIBRATION_SUBSTITUTION=FORBIDDEN
|
|
SILENT_LENS_IDENTITY_INFERENCE=FORBIDDEN
|
|
OPTICS_TUI_WORKFLOW=REQUIRED
|
|
PROFILE_IMPORT_EXPORT=REQUIRED
|
|
```
|
|
|
|
The final onboarding UX, aliases, profile import/export and calibration assistant remain part of the
|
|
upcoming PRODUCT_DEFINITION phase.
|
|
|
|
## Deferred / optional architecture
|
|
|
|
The following remain deliberately deferred unless later evidence and product definition justify
|
|
them:
|
|
|
|
- multiple CPU/GPU/I/O pools;
|
|
- general inter-Task parallelism;
|
|
- multi-GPU;
|
|
- a general dependency DAG and complex priorities;
|
|
- a generic backend framework;
|
|
- distributed compute;
|
|
- ALIKED until model provenance, ONNX export and an authoritative reproducible oracle are available.
|
|
|
|
Deferring inter-Task parallelism does not permit accidental serialism inside an active Task.
|
|
|
|
The established Queue/Governor plus bounded internal fan-out are sufficient to enforce
|
|
`SERIALISM_REQUIRES_PROOF` without introducing a second runtime.
|
|
|
|
## Sequencing principles
|
|
|
|
1. Scientific integrity and the interactive host reserve are inviolable.
|
|
2. Within those boundaries, maximum safe useful throughput is mandatory.
|
|
3. `SERIALISM_REQUIRES_PROOF`.
|
|
4. Per-item atomicity does not imply cross-item serialization.
|
|
5. Deterministic owner-only publication may coexist with bounded parallel preparation.
|
|
6. Durable atomic results and truthful recovery precede concurrency convenience.
|
|
7. Memory, files, threads, processes, temporary storage and scratch ownership remain bounded.
|
|
8. Operational hardware bounds must not silently become scientific dataset-size limits.
|
|
9. One Task Runtime / Queue ownership model and one Resource Governor remain authoritative.
|
|
10. Validated and useful GPU backends are preferred automatically.
|
|
11. Scratch is optional storage, never RAM.
|
|
12. Real-data proofs stop at explicit scientific boundaries.
|
|
13. Historical checkpoint evidence is preserved rather than silently modernized.
|
|
14. Current-state documentation must not present superseded progress snapshots as current work.
|
|
15. Repository documentation, agent contracts, source comments and UI target English.
|
|
16. Future product capabilities must remain clearly marked as future until implemented and validated.
|
|
17. Reviews remain delta-based from the relevant acquired checkpoint unless concrete evidence requires
|
|
reopening an unchanged FROZEN boundary.
|
|
|
|
## Current next
|
|
|
|
The repository execution contract is active:
|
|
|
|
```text
|
|
DOCUMENTATION_FINDING_REMEDIATION PASS
|
|
SOURCE_COMMENT_AUDIT PASS
|
|
SOURCE_COMMENT_REMEDIATION PASS
|
|
PRODUCT_DEFINITION_V1 PASS/FROZEN
|
|
PROMPT_TREE CURRENT
|
|
CALIBRATION_EVIDENCE_SOLVER_V1 IMPLEMENTED/VALIDATED
|
|
CALIBRATION_TOOLING_ALIGNMENT PASS/FROZEN
|
|
CURRENT_NEXT CALIBRATION_WORKFLOW_COORDINATOR
|
|
```
|
|
|
|
Implementation proceeds only through explicitly human-authorized tranches under `prompt.md` and the
|
|
numbered `prompt/` execution contract. The current authorized dependency is the final usable
|
|
calibration workflow; its next missing sub-boundary is the workflow coordinator.
|