Files
NODEDC_MISSION_CORE/docs/audits/2026-09-20-planning-project-deletion.md
DCCONSTRUCTIONS e515ab1b8c feat(planning): consolidate recorded-route localization and spatial scene
Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
2026-09-21 08:47:19 +03:00

53 lines
2.9 KiB
Markdown

# Planning project catalog removal
Owner request: trash actions in the “Совмещённые маршруты” selector, with
confirmation matching the recorded-session workflow. No actual operator record
was selected for deletion during implementation or browser QA.
## Boundary
- Removal is catalog-only, persisted by exact `kind:UUID` in
`registration-runs/catalog-deletions.sqlite3`. This is not disk reclamation.
- Reports, source captures, reference/query clouds, frozen draft snapshots and
other experiments stay intact. Tombstones do not rewrite evidence.
- Deleted runs still participate in draft ownership when projecting the list:
deleting the last result cannot resurrect its draft as a new catalog entry.
- Only completed/failed live runs, ready/failed recorded runs and unstarted
drafts are removable. Unknown runtime states fail closed. Draft revisions are
checked and drafts already associated with an experiment are refused.
- Repeating an acknowledged deletion is idempotent. Catalog and project detail
exclude removed entries after process restart. Engineering evidence endpoints
retain historical access; no source-store or scanner command is invoked.
## Interface
The Design Guideline `SelectOption.action` supplies an independent canonical
IconButton beside the selection button. Action-bearing menus use dialog
semantics; ordinary selectors retain listbox semantics. Activating a row action
closes the menu without selecting that row. Focus returns through the surviving
selector trigger when confirmation closes.
Owner visual correction: row actions match Data → Sessions, with a transparent
2.35rem hit column, muted 15px trash glyph, no circular backing and danger color
on hover. Shared Select owns this geometry; Mission Core has no local override.
Mission Core owns exact project identity, terminal-state admission,
ConfirmationModal copy, API request and ToastStack errors. The confirmation
includes the timestamp to distinguish identically named runs. Pending submission
is protected against repetition. Successful removal clears only that selected
project; late list/detail responses cannot reinsert a removed item.
## Validation
- 20 backend catalog tests: exact identity, same-name siblings, source/report
preservation, terminal/unknown states, revision mismatch, idempotence,
restart persistence, empty catalog, invalid requests and draft ownership.
- 869 Control Station tests; architecture checks, typecheck and production build.
- Design Guideline registry, workspace typechecks, six Select contract tests
and production catalog build.
- Browser QA uses existing evidence and cancels confirmation; it does not delete
a real project or create a synthetic project in the operator catalog.
The canonical integrated service remains on port 8000. No alternate backend,
device acquisition, registration run or live replay publisher is introduced.