docs: refresh architecture and roadmap
This commit is contained in:
parent
6f2db41010
commit
31827a043d
3 changed files with 203 additions and 127 deletions
28
README.md
28
README.md
|
|
@ -20,16 +20,16 @@ persistante, enrichissable et versionnable.
|
||||||
|
|
||||||
## État actuel
|
## État actuel
|
||||||
|
|
||||||
### Briques implémentées (IMPLEMENTED)
|
### Briques validées
|
||||||
|
|
||||||
- **Project** : cycle de vie persistant, identité stable et Project Database ouverte
|
- **Project** : cycle de vie persistant, identité stable et Project Database ouverte
|
||||||
- **Import** : premier task kind de production, exécuté par la file générique en lots bornés et reprenables
|
- **Import** : premier task kind de production, exécuté par la file générique en lots bornés et reprenables
|
||||||
- **ScanSet / Image Catalog v1** : acquisitions, images logiques, provenance et assets SHA-256 persistants et paginés
|
- **ScanSet / Image Catalog v1** : acquisitions, images logiques, provenance et assets SHA-256 persistants et paginés
|
||||||
- **Capture / Asset Provenance v1** : Captures par ScanSet, associations source/dérivé
|
- **Capture / Asset Provenance v1** : Captures par ScanSet, associations source/dérivé
|
||||||
et sélection explicite d'une image logique — IMPLEMENTED / VALIDATION PENDING
|
et sélection explicite d'une image logique — PASS / FROZEN
|
||||||
- **Découverte et planification de campagne bornées** : racines explicites,
|
- **Découverte et planification de campagne bornées** : racines explicites,
|
||||||
plan metadata-only et exécution par groupes via S3-E — IMPLEMENTED /
|
plan metadata-only et exécution par groupes via S3-E — PASS / FROZEN ; campagne
|
||||||
VALIDATION PENDING
|
A6000 réelle validée sur 953 ARW + 953 JPEG MPF
|
||||||
- **Feature Store v1/v2** : ORB U8×32, SIFT/RootSIFT F32×128 et lecture typée bornée
|
- **Feature Store v1/v2** : ORB U8×32, SIFT/RootSIFT F32×128 et lecture typée bornée
|
||||||
- **Image View** : vues triées et filtrées pour la TUI
|
- **Image View** : vues triées et filtrées pour la TUI
|
||||||
- **Task** : moteur de tâches avec pause/reprise, annulation et séquences
|
- **Task** : moteur de tâches avec pause/reprise, annulation et séquences
|
||||||
|
|
@ -60,19 +60,19 @@ persistante, enrichissable et versionnable.
|
||||||
- **Resource Snapshot** : capture instantanée des ressources
|
- **Resource Snapshot** : capture instantanée des ressources
|
||||||
- **Resource Governor** : arbitrage centralisé des budgets et réservations
|
- **Resource Governor** : arbitrage centralisé des budgets et réservations
|
||||||
|
|
||||||
### Briques en cours de consolidation
|
### Prochaine tranche
|
||||||
|
|
||||||
- Intégration scheduler ↔ governor avec séquences adaptatives
|
- **Exécution durable de campagne d'acquisition** : confirmations et progression
|
||||||
- Documentation architecture
|
persistantes, matérialisation S3-E incrémentale, reprise par `capture_id` retenu
|
||||||
- **Visual Index v1** : LSH ORB persistant, incrémental et validé, avec recherche top-K bornée
|
et admission par les Task/Scheduler/Governor existants. Voir la
|
||||||
|
[roadmap canonique](docs/roadmap/roadmap.md).
|
||||||
|
|
||||||
### Briques prévues (PLANNED)
|
### Plus tard / différé
|
||||||
|
|
||||||
- Graphe de dépendances pour ordonner les futures reprises interdépendantes
|
- publication durable dense/mesh et scratch SSD externe optionnel gouverné ;
|
||||||
- DAG de dépendances
|
- workflow TUI de confirmation/progression et sources mixtes multi-ScanSet ;
|
||||||
- Pools de workers multiples (CPU/GPU/IO)
|
- vidéo/keyframes, coverage assistance, viewer et exports ;
|
||||||
- Publication live validée
|
- DAG général, pools multiples et parallélisme inter-tâches restent différés.
|
||||||
- Viewer intégré
|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Capture / Asset Provenance v1 — Project DB v19
|
## Capture / Asset Provenance v1 — Project DB v19
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING.** La migration transactionnelle v18→v19
|
**PASS / FROZEN.** La migration transactionnelle v18→v19
|
||||||
ajoute seulement une fondation de catalogue : `captures`, `capture_images`,
|
ajoute seulement une fondation de catalogue : `captures`, `capture_images`,
|
||||||
`capture_assets`, `capture_selections` et `asset_derivations`. Un `Capture`
|
`capture_assets`, `capture_selections` et `asset_derivations`. Un `Capture`
|
||||||
appartient à un seul ScanSet ; il n'est ni un `image_id` ni une nouvelle identité
|
appartient à un seul ScanSet ; il n'est ni un `image_id` ni une nouvelle identité
|
||||||
|
|
@ -19,7 +19,7 @@ automatique.
|
||||||
|
|
||||||
### S3-E — Orchestration d'ingestion multi-source v1
|
### S3-E — Orchestration d'ingestion multi-source v1
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING.** S3-E reçoit un ScanSet explicite et au
|
**PASS / FROZEN.** S3-E reçoit un ScanSet explicite et au
|
||||||
plus 64 chemins source explicitement fournis par l'appelant ; il ne parcourt
|
plus 64 chemins source explicitement fournis par l'appelant ; il ne parcourt
|
||||||
jamais un répertoire. Chaque fichier est d'abord publié comme asset immuable
|
jamais un répertoire. Chaque fichier est d'abord publié comme asset immuable
|
||||||
géré, puis son évidence S3-D est extraite depuis ces octets publiés. Le
|
géré, puis son évidence S3-D est extraite depuis ces octets publiés. Le
|
||||||
|
|
@ -58,7 +58,7 @@ interprété ; les IDs et la sémantique v18 restent inchangés.
|
||||||
|
|
||||||
### Couche finale bornée de découverte et de planification de campagne
|
### Couche finale bornée de découverte et de planification de campagne
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING.** Cette couche reçoit de 1 à 64 racines
|
**PASS / FROZEN.** Cette couche reçoit de 1 à 64 racines
|
||||||
absolues, lexicalement normalisées et explicitement fournies par l'appelant.
|
absolues, lexicalement normalisées et explicitement fournies par l'appelant.
|
||||||
Elle ne parcourt pas récursivement : chaque racine et chacune de ses entrées
|
Elle ne parcourt pas récursivement : chaque racine et chacune de ses entrées
|
||||||
immédiates régulières est inspectée sans suivre de lien symbolique. Seuls les
|
immédiates régulières est inspectée sans suivre de lien symbolique. Seuls les
|
||||||
|
|
@ -116,7 +116,7 @@ sont applicables.
|
||||||
|
|
||||||
### S3-D — Acquisition Pairing Evidence v1
|
### S3-D — Acquisition Pairing Evidence v1
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING — non FROZEN.** S3-D extrait, depuis des
|
**PASS / FROZEN.** S3-D extrait, depuis des
|
||||||
assets source immuables, un ensemble fixe et borné de métadonnées d'évidence
|
assets source immuables, un ensemble fixe et borné de métadonnées d'évidence
|
||||||
d'appariement. Pour les RAW, l'extraction est metadata-only avec LibRaw ; pour
|
d'appariement. Pour les RAW, l'extraction est metadata-only avec LibRaw ; pour
|
||||||
les JPEG, elle utilise libexif. Cette évidence n'est pas une identité
|
les JPEG, elle utilise libexif. Cette évidence n'est pas une identité
|
||||||
|
|
@ -946,7 +946,7 @@ ouvert.
|
||||||
|
|
||||||
## Statut
|
## Statut
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING** — SQLite système, schéma v19 et migrations séquentielles
|
**PASS / FROZEN** — SQLite système, schéma v19 et migrations séquentielles
|
||||||
v1→v2→v3→v4→v5→v6→v7→v8→v9→v10→v11→v12→v13→v14→v15→v16→v17→v18→v19, identité projet, transactions
|
v1→v2→v3→v4→v5→v6→v7→v8→v9→v10→v11→v12→v13→v14→v15→v16→v17→v18→v19, identité projet, transactions
|
||||||
tâche+checkpoint, pagination de reprise et artefacts génériques.
|
tâche+checkpoint, pagination de reprise et artefacts génériques.
|
||||||
|
|
||||||
|
|
@ -967,11 +967,11 @@ bornée à 256. Les identités sont des `INTEGER PRIMARY KEY AUTOINCREMENT` SQLi
|
||||||
allouées sous transaction ; aucun `SELECT MAX()+1` n'est utilisé en
|
allouées sous transaction ; aucun `SELECT MAX()+1` n'est utilisé en
|
||||||
fonctionnement normal et une identité validée n'est jamais réutilisée.
|
fonctionnement normal et une identité validée n'est jamais réutilisée.
|
||||||
|
|
||||||
**IMPLEMENTED / VALIDATION PENDING** — Capture / Asset Provenance v1 :
|
**PASS / FROZEN** — Capture / Asset Provenance v1 :
|
||||||
Capture borné par ScanSet, associations explicites asset/image, sélection
|
Capture borné par ScanSet, associations explicites asset/image, sélection
|
||||||
courante optionnelle et dérivation asset à parent unique. RAW, vidéo,
|
courante optionnelle et dérivation asset à parent unique. S3-B1/S3-D/S3-E et la
|
||||||
appariement automatique et toute exécution de dérivation restent hors de cette
|
campagne bornée réutilisent cette fondation sans redéfinir ses identités ; la
|
||||||
fondation.
|
vidéo reste hors de S3.
|
||||||
|
|
||||||
La migration v3→v4 ne lit pas `manifest.tsv`. Elle crée le ScanSet legacy et
|
La migration v3→v4 ne lit pas `manifest.tsv`. Elle crée le ScanSet legacy et
|
||||||
positionne `metadata.legacy_image_catalog_pending=1` dès qu'une ancienne tâche
|
positionne `metadata.legacy_image_catalog_pending=1` dès qu'une ancienne tâche
|
||||||
|
|
|
||||||
|
|
@ -1,125 +1,201 @@
|
||||||
# Roadmap Lardon3D
|
# Roadmap canonique Lardon3D
|
||||||
|
|
||||||
## Precision features
|
Cette feuille de route décrit l'ordre de dépendance actuel. Les contrats détaillés
|
||||||
|
restent dans `docs/architecture/`; ce document indique ce qui est fermé, ce qui
|
||||||
|
vient immédiatement ensuite et ce qui demeure volontairement différé.
|
||||||
|
|
||||||
- **IMPLEMENTED v1A** : ORB coarse stable, SIFT/RootSIFT OpenCV 5, Feature File
|
## Situation actuelle
|
||||||
v2 F32×128, grille/coverage, tâches récupérables et consolidation intra-image.
|
|
||||||
- **IMPLEMENTED** : Candidate Pair Generator, matching précis et vérification géométrique.
|
|
||||||
- **PLANNED / BLOCKED** : ALIKED, en attente de provenance modèle et d'un export
|
|
||||||
ONNX reproductible validé contre un oracle upstream.
|
|
||||||
|
|
||||||
## Direction générale
|
Lardon3D possède une chaîne scientifique persistante allant des acquisitions
|
||||||
|
explicites aux frontières Sparse SfM et MVS validées. Les travaux volumineux
|
||||||
|
doivent rester incrémentaux, bornés, reprenables, durables et admis par l'unique
|
||||||
|
Resource Governor : aucune étape ne peut supposer qu'une campagne entière tient
|
||||||
|
en RAM ou termine dans une seule vie de processus.
|
||||||
|
|
||||||
Lardon3D suit une feuille de route ordonnée qui privilégie la stabilité et la consolidation avant l'ajout de fonctionnalités complexes.
|
### Fondations PASS / FROZEN
|
||||||
|
|
||||||
## Étapes terminées (DONE)
|
- Gates A–G Sparse SfM, dont F0, orchestration Task/Project DB et politique
|
||||||
|
Governor : [Sparse SfM](../architecture/sparse_sfm.md) et
|
||||||
|
[frontière ressource](../architecture/resource_boundary.md).
|
||||||
|
- Track Model / Track Builder v1 : [Track Model](../architecture/tracks.md) et
|
||||||
|
[Track Builder](../architecture/track_builder.md).
|
||||||
|
- Phase H v1 d'enrichissement incrémental multi-snapshot :
|
||||||
|
[Project DB](../architecture/project_database.md).
|
||||||
|
- MVS-M1, frontière OpenMVS v2.4.0, identité dense et export COLMAP/PLY borné :
|
||||||
|
[pipeline de reconstruction](../architecture/reconstruction_pipeline.md).
|
||||||
|
- Task Runtime, checkpoints atomiques, Queue, Scheduler et Resource Governor :
|
||||||
|
[Task](../architecture/task_system.md), [Queue](../architecture/task_queue.md)
|
||||||
|
et [Governor](../architecture/resource_governor.md).
|
||||||
|
- Project DB v19 et S1–S3 Capture / Acquisition Ingestion : provenance
|
||||||
|
Capture/Asset, import capture-safe, publication dérivée, développement RAW,
|
||||||
|
siblings multi-source, évidence S3-D, orchestration S3-E et campagne bornée :
|
||||||
|
[Project DB et ingestion](../architecture/project_database.md).
|
||||||
|
|
||||||
### Phase 1 : Fondations
|
### S3 Capture / Acquisition Ingestion — PASS / FROZEN
|
||||||
- ✅ TUI modulaire avec ncursesw
|
|
||||||
- ✅ Gestion persistante des projets
|
|
||||||
- ✅ Import d'images migré vers le scheduler générique, borné et reconstructible
|
|
||||||
- ✅ Catalogue d'images et vues
|
|
||||||
- ✅ Moteur de tâches avec pause/reprise, annulation, checkpoints
|
|
||||||
- ✅ File FIFO avec sélection adaptative et backpressure
|
|
||||||
- ✅ Profil matériel et snapshots de ressources
|
|
||||||
- ✅ Resource Governor avec réservations opaques
|
|
||||||
- ✅ Intégration scheduler ↔ governor
|
|
||||||
- ✅ Sélection de la première tâche admissible
|
|
||||||
|
|
||||||
## Travaux d'infrastructure en cours (CURRENT FOUNDATION)
|
```text
|
||||||
|
S3-A Derived Image Publication PASS / FROZEN
|
||||||
|
S3-B1 Deterministic RAW Development PASS / FROZEN
|
||||||
|
S3-C Multi-Source Capture Association PASS / FROZEN
|
||||||
|
S3-D Acquisition Pairing Evidence v1 PASS / FROZEN
|
||||||
|
S3-E Multi-Source Ingestion v1 PASS / FROZEN
|
||||||
|
Bounded Campaign Ingestion PASS / FROZEN
|
||||||
|
Project DB v19
|
||||||
|
```
|
||||||
|
|
||||||
### Phase 2 : Consolidation
|
```text
|
||||||
- 🔄 Documentation architecturale
|
entrées d'acquisition explicites
|
||||||
- 🔄 Tests et validation
|
→ publication SOURCE immuable
|
||||||
- 🔄 Optimisations mémoire
|
→ provenance Capture/Asset
|
||||||
|
→ métadonnées RAW/JPEG et évidence d'acquisition
|
||||||
|
→ propositions de campagne déterministes
|
||||||
|
→ regroupement fort ou explicitement confirmé
|
||||||
|
→ un Capture par observation physique résolue et siblings SOURCE
|
||||||
|
→ développement RAW déterministe si demandé
|
||||||
|
→ image_id scientifique immuable
|
||||||
|
→ pipeline aval existant
|
||||||
|
```
|
||||||
|
|
||||||
## Prochaines étapes décidées (NEXT)
|
Les identités restent distinctes : `Capture != fichier`, `Capture != asset`,
|
||||||
|
`Capture != image_id`, `Capture != SHA-256` et `Capture != basename`.
|
||||||
|
|
||||||
### Phase 3 : Persistance
|
### Validation réelle Sony A6000
|
||||||
- ✅ Fondation versionnée des checkpoints de tâches
|
|
||||||
- ✅ Project Database v7 (tâches, catalogue, Feature Store, Visual Index et precision features)
|
|
||||||
- ✅ Branchement Project Database au cycle de vie projet et inventaire de reprise
|
|
||||||
- ✅ Registry durable des types métier de tâches
|
|
||||||
- ✅ Premier type métier reconstructible (`import.images`)
|
|
||||||
- ✅ Resoumission automatique contrôlée et bornée des tâches récupérables
|
|
||||||
- ✅ ScanSet v1 et Image Catalog persistant v1
|
|
||||||
|
|
||||||
### Phase 4 : Pipeline avancé
|
Campagne `Photogrammetrie/2026-08-26_Baie_Moteur_A6000` :
|
||||||
- ✅ Feature Store v1/v2, ORB, SIFT/RootSIFT et consolidation intra-image
|
|
||||||
- ✅ Visual Index v1 segmenté et persistant
|
|
||||||
- ✅ Candidate Pair Generator
|
|
||||||
- ✅ Matching et vérification géométrique
|
|
||||||
- ✅ Track Model / Track Builder v1
|
|
||||||
- ✅ Sparse SfM : primitives géométriques Gate C et noyau incrémental Gate D
|
|
||||||
implémentés
|
|
||||||
- ✅ Sparse SfM Gate E : Bundle Adjustment final par composante PASS / FROZEN
|
|
||||||
- ✅ Sparse SfM Gate F : orchestration durable et publication atomique PASS / FROZEN
|
|
||||||
- ✅ Sparse SfM Gate G : politique et cœur **PASS / FROZEN**
|
|
||||||
|
|
||||||
### Phase 5 : Reconstruction
|
- 953 ARW et 953 JPEG, soit 1906 sources ;
|
||||||
- ✅ Orchestration de reconstruction incrémentale H v1 — **PASS / FROZEN**
|
- métadonnées : ARW 953/953 OK, JPEG 953/953 OK ;
|
||||||
- 🔄 Capture / Asset Provenance v1 — **IMPLEMENTED / VALIDATION PENDING** :
|
- JPEG Sony reconnus comme conteneurs MPF valides : APP2 `MPF\0`, images JPEG
|
||||||
Project DB v19 ajoute les Captures par ScanSet, les associations source/dérivé
|
secondaires validées, remplissage inter-image/final nul, maximum privé huit ;
|
||||||
et la sélection explicite d'une image logique, sans changer le pipeline
|
- `STRONG_GROUPS=0`, `CANDIDATE_PAIRS=953`, ambiguïtés 0, contradictions 0 ;
|
||||||
scientifique. L'ingestion RAW et vidéo reste PLANNED.
|
- plan identique après inversion de l'ordre des racines.
|
||||||
- ✅ MVS-M1 — **PASS / FROZEN** : identité dense `L3DMDID2`
|
|
||||||
v2 (220 octets) liant reconstruction de base, jeu d'images source,
|
|
||||||
`calibration_scope_identity` historique, binding numérique exact `L3DMCAL1` v1,
|
|
||||||
backend et paramètres ; les octets source restent liés séparément ; frontière
|
|
||||||
OpenMVS v2.4.0 externe
|
|
||||||
`InterfaceCOLMAP`/`DensifyPointCloud` ; export COLMAP déterministe avec
|
|
||||||
undistortion OpenCV, observations transformées et tracks réels ; texte COLMAP
|
|
||||||
exporté en flux et tracks déterministes indexés sans rescan quadratique des
|
|
||||||
observations. Le binding de calibration trie les `image_id`, encode des champs
|
|
||||||
little-endian explicites à largeur fixe, rejette NaN/Inf et canonise `-0`. Chaque
|
|
||||||
invocation crée sous le staging appelant un espace de travail privé neuf, sans
|
|
||||||
réemployer scène, profondeur, cache ou sortie antérieure. Le PLY par défaut
|
|
||||||
OpenMVS v2.4.0, binaire little-endian, est validé avec listes
|
|
||||||
`view_indices`/`view_weights` bornées, nombres indépendants de la locale,
|
|
||||||
en-tête <= 1 MiB en octets bruts (CRLF = deux octets), lignes <= 64 KiB,
|
|
||||||
LF/CRLF acceptés et CR seul malformé rejeté ; le PLY fusionné est requis en mode
|
|
||||||
de fusion 0. Une coordonnée source undistordue
|
|
||||||
non finie est `INVALID_SOURCE_IMAGE`, une pose snapshot invalide reste
|
|
||||||
`INVALID_SNAPSHOT`. Capacité CPU-only conditionnelle et `--max-threads`
|
|
||||||
supporté ; bornes locales. Le SHA-256 source est complet et borné à 1 GiB par
|
|
||||||
fichier régulier, sans budget agrégé du jeu de sources ; le hashage des deux
|
|
||||||
binaires backend relève d'un budget partagé distinct. Sans nouveau sous-système.
|
|
||||||
Restent différés : publication Project DB/durable, Task Runtime,
|
|
||||||
Queue/Governor, `ResourceEstimate`, annulation, mesh, texturing, viewer,
|
|
||||||
scratch/SSD et infrastructure backend généralisée.
|
|
||||||
- 📋 Mesh
|
|
||||||
- 📋 Contraintes externes
|
|
||||||
- 📋 Consolidation
|
|
||||||
|
|
||||||
## Étapes futures (LATER)
|
Le stem commun ne prouve jamais une acquisition. Les 953 propositions doivent
|
||||||
|
être confirmées et deviennent `CALLER_EXPLICIT`, jamais `STRONG`. La campagne
|
||||||
|
complète n'a pas encore été matérialisée.
|
||||||
|
|
||||||
### Phase 6 : Production
|
### Limite de reprise DB v19
|
||||||
- ⏳ Viewer intégré
|
|
||||||
- ⏳ Publication live validée
|
|
||||||
- ⏳ Export multi-formats
|
|
||||||
- ⏳ Optimisations performances
|
|
||||||
|
|
||||||
### Phase 7 : Avancé
|
S3-E reprend une matérialisation connue par `resume_capture_id`. Une campagne
|
||||||
- ⏳ Priorités entre tâches
|
peut reconstruire son plan et conserver côté appelant le `capture_id` de chaque
|
||||||
- ⏳ Pools de workers multiples (CPU/GPU/IO)
|
groupe. Si le processus meurt après création du Capture mais avant rétention
|
||||||
- ⏳ DAG de dépendances complet
|
durable de cet ID, DB v19 ne peut le redécouvrir sans inventer une identité
|
||||||
- ⏳ Parallélisme inter-tâches
|
interdite. Il n'existe donc pas de garantie whole-campaign exactly-once. Une
|
||||||
|
future identité durable de requête/campagne pourra fermer cette fenêtre ; elle
|
||||||
|
ne sera jamais déduite d'un chemin, SHA, basename, timestamp, métadonnée ou
|
||||||
|
`image_id`.
|
||||||
|
|
||||||
## Sujets exploratoires (RESEARCH)
|
## NEXT — exécution durable de campagne d'acquisition
|
||||||
|
|
||||||
- 🔬 Intégration avec des sources de données externes
|
La prochaine tranche architecturale unique est l'exécution opérationnelle du
|
||||||
- 🔬 Support de formats d'entrée variés
|
plan S3 gelé en réutilisant Task, Scheduler et Governor existants :
|
||||||
- 🔬 Optimisation pour machines à très faible mémoire
|
|
||||||
- 🔬 Distribution de calcul
|
|
||||||
|
|
||||||
## Principes directeurs
|
1. identité durable de requête et payload Task borné ;
|
||||||
|
2. persistance/rechargement des confirmations, du curseur et des `capture_id` ;
|
||||||
|
3. matérialisation incrémentale d'un groupe S3-E par unité sûre ;
|
||||||
|
4. checkpoint après rétention durable, pause/reprise/annulation aux frontières ;
|
||||||
|
5. admission et budgets par l'unique Resource Governor ;
|
||||||
|
6. progression et échecs sans runtime, queue ou persistence parallèle.
|
||||||
|
|
||||||
1. **Stabilité avant performance** : ne jamais saturer le système hôte
|
Cette tranche décidera explicitement si une évolution additive après DB v19 est
|
||||||
2. **Séquençage avant parallélisme** : lots adaptatifs et workers uniques d'abord
|
nécessaire. Elle ne peut ni changer les identités S3 ni fusionner des Captures.
|
||||||
3. **Réservation atomique** : aucune exécution sans contrat valide
|
|
||||||
4. **Persistance progressive** : chaque résultat doit pouvoir être repris
|
|
||||||
5. **Documentation vivante** : la documentation suit le code, pas l'inverse
|
|
||||||
|
|
||||||
## Vérification
|
## NEXT REAL-DATA MILESTONE — A6000 ENGINE BAY END-TO-END
|
||||||
|
|
||||||
Cette roadmap est vérifiée contre l'état réel du code. Les fonctionnalités déjà implémentées ne sont pas marquées comme NEXT ou LATER.
|
1. confirmer explicitement les 953 propositions ARW/JPEG ;
|
||||||
|
2. matérialiser progressivement environ 953 Captures ;
|
||||||
|
3. produire les représentations scientifiques par lots gouvernés ;
|
||||||
|
4. exécuter features, candidats, matching, vérification, tracks et Sparse SfM ;
|
||||||
|
5. évaluer la qualité de la reconstruction sparse ;
|
||||||
|
6. exécuter MVS/dense avec budgets et scratch contrôlés ;
|
||||||
|
7. publier durablement nuage dense et mesh ;
|
||||||
|
8. comparer le résultat aux tentatives photogrammétriques antérieures.
|
||||||
|
|
||||||
|
Ce milestone est une intégration réelle, pas une nouvelle série de micro-gates
|
||||||
|
S3. Les antécédents d'OOM/SIGSEGV OpenMVS, pression swap, grands intermédiaires
|
||||||
|
et temps longs imposent reprise, progression et contrôle de ressources.
|
||||||
|
|
||||||
|
## NEAR TERM
|
||||||
|
|
||||||
|
### Scratch SSD externe et swap optionnel
|
||||||
|
|
||||||
|
Matériel envisagé : SSD externe d'environ 500 Go dans un boîtier USB-C 10 Gb/s.
|
||||||
|
La capacité planifiée est : détecter un disque externe adapté, le présenter dans
|
||||||
|
la configuration TUI/projet et demander si ce projet doit l'utiliser.
|
||||||
|
|
||||||
|
Usages possibles : workspace/scratch, intermédiaires dense/mesh/texturing et,
|
||||||
|
sur activation explicite, swap de sécurité. Le contrat devra être possédé par
|
||||||
|
l'exécution Task, le Resource Governor et la politique temporaire du projet ;
|
||||||
|
il ne doit pas devenir un gestionnaire de stockage ad hoc.
|
||||||
|
|
||||||
|
- le scratch déplace les gros intermédiaires hors de la RAM et du disque système ;
|
||||||
|
- il peut permettre des jobs bornés plus grands ;
|
||||||
|
- SSD/swap ne sont jamais de la RAM ni une extension du budget scientifique ;
|
||||||
|
- latence et débit USB restent distincts de la mémoire ;
|
||||||
|
- l'utilisation reste optionnelle et Governor-controlled ;
|
||||||
|
- retrait, déconnexion, ownership, nettoyage et publication atomique exigent
|
||||||
|
des sémantiques explicites ;
|
||||||
|
- aucun montage, formatage, `swapon` ou nettoyage destructif automatique n'est
|
||||||
|
actuellement implémenté ou autorisé.
|
||||||
|
|
||||||
|
### Publication durable dense / mesh
|
||||||
|
|
||||||
|
MVS-M1 reste la frontière scientifique gelée. Les prochaines étapes portent sur
|
||||||
|
exécution, reprise, budgets mémoire/stockage et publication atomique :
|
||||||
|
|
||||||
|
```text
|
||||||
|
dense → mesh → refinement → texturing → consolidation → export
|
||||||
|
```
|
||||||
|
|
||||||
|
Le scratch devient particulièrement pertinent à cette frontière.
|
||||||
|
|
||||||
|
### Workflow TUI-first
|
||||||
|
|
||||||
|
La TUI exposera état projet, découverte de campagne, confirmation des candidats,
|
||||||
|
progression, pause/reprise/annulation disponible, Governor, choix du scratch et
|
||||||
|
étapes aval. ncurses reste au thread principal. Aucun projet GUI général n'est
|
||||||
|
introduit.
|
||||||
|
|
||||||
|
### Sources mixtes et multi-ScanSet
|
||||||
|
|
||||||
|
Sony A6000, Samsung S21 et futures sources peuvent varier en device, objectif,
|
||||||
|
résolution et format. Elles réutilisent le même modèle Capture/Asset/Image, sans
|
||||||
|
fork par caméra. Plusieurs ScanSets et représentations sélectionnées alimentent
|
||||||
|
l'enrichissement Phase H existant vers un modèle consolidé ; Phase H n'est pas
|
||||||
|
redéfini ici.
|
||||||
|
|
||||||
|
## LATER
|
||||||
|
|
||||||
|
- **Vidéo/keyframes** : asset vidéo, timeline, extraction déterministe,
|
||||||
|
provenance frame↔vidéo, espacement, blur/qualité, redondance et couverture.
|
||||||
|
Ces politiques restent séparées des contrats photo gelés.
|
||||||
|
- **Maintenance projet** : vérification de provenance, assets orphelins,
|
||||||
|
scrub/réconciliation et réclamation sûre du scratch. Aucun asset immuable
|
||||||
|
partagé n'est supprimé silencieusement.
|
||||||
|
- **Coverage/capture assistance** : overlap, zones faibles, photos ou ScanSets
|
||||||
|
supplémentaires et comparaison de points de vue ; jamais une identité.
|
||||||
|
- **Viewer** : frontière passive et optionnelle pour sparse, dense, mesh, poses,
|
||||||
|
provenance, couverture et overlays qualité. Le projet reste TUI-first.
|
||||||
|
- **Exports/publication live** : snapshots validés et consommation sans accès
|
||||||
|
aux buffers workers mutables.
|
||||||
|
|
||||||
|
## DEFERRED / OPTIONAL
|
||||||
|
|
||||||
|
- pools multiples CPU/GPU/IO, parallélisme inter-tâches et multi-GPU ;
|
||||||
|
- DAG général de dépendances et priorités complexes ;
|
||||||
|
- infrastructure backend générique et distribution de calcul ;
|
||||||
|
- ALIKED tant que provenance modèle, export ONNX et oracle upstream ne sont pas
|
||||||
|
reproductibles.
|
||||||
|
|
||||||
|
Ces idées ne doivent pas devancer l'exécution durable de campagne ni créer un
|
||||||
|
second runtime, Governor ou système de persistance.
|
||||||
|
|
||||||
|
## Principes de séquencement
|
||||||
|
|
||||||
|
1. stabilité et intégrité scientifique avant débit ;
|
||||||
|
2. résultats atomiques et durables avant parallélisme ;
|
||||||
|
3. lots bornés et reprise avant taille de campagne ;
|
||||||
|
4. un Task Runtime, un Scheduler et un Resource Governor ;
|
||||||
|
5. scratch optionnel sans élargissement implicite des budgets RAM ;
|
||||||
|
6. TUI de contrôle avant visualisation riche ;
|
||||||
|
7. documentation canonique alignée sur le code validé.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue