5.4 KiB
Whole reference and independent capture catalog
Owner decision and product composition
New planning executions use the complete selected reference recording. The reference crop section, its range controls and its 30-m shortcut are removed. Data → Sessions and records lists independent physical recordings; live passes created by the planner stay with their planning studies and are not offered as reference choices. No new type selector, tab, catalog copy or workspace is introduced. This is an owner-approved projection change in existing surfaces, using the existing Select, Inspector, Button and WorkspaceWindow components.
The rejected alternative was another type dropdown in Data. It would preserve the mixed acquisition catalog the owner explicitly asked to separate. Physical evidence and corrected-map generations remain immutable. A planner pass is still a physical capture, not a synthetic LAB result.
Reproduced defects
- A newly selected reference was initialized to the first 30 metres.
- Choosing the same recording again reset its independently stored interval to indices 0…1. React did not reload the unchanged source identity, so the interval remained there. A stationary prefix then showed approximately zero metres and two poses, disabling launch. The scanner lifecycle was not a dependency of that button condition.
- The latest failed ring study is terminal (
cancelled). Its frozen reference was about 97.57 metres, not the complete approximately 579.98-metre ring. Initialization exhausted its recorded candidates without finding a location. This establishes the incomplete reference, not that full-reference matching has already succeeded at the operator's latest location.
Implementation boundaries
The planner derives its reference poses from the complete loaded source; it no
longer owns editable start/end state. Re-selecting the same source explicitly
reloads its generation without collapsing its route. Product saves request
whole_recording: true; the server resolves the endpoints from the immutable
source. Existing bounded API clients remain a compatibility path for historical
recorded experiments. Existing reports retain their frozen geometry. Opening
an older editable draft prepares a full-route revision rather than rewriting
the prior run.
The physical session store adds append-only planning-acquisition links keyed by exact session and run identities. New live binding records the link before publishing its run state. Startup reconciliation backfills only explicit live report bindings; names, distances and fit success are never classifiers. The link may precede capture finalization/catalog ingestion, survives archive reconciliation and project catalog tombstones, and is excluded from the physical source evidence digest.
The standalone catalog scope filters these links and LAB projections in SQL
before pagination. Data and new reference selectors request it. Existing
source/all scientific scopes and direct source/replay endpoints remain
unchanged. Recorded-repeat selection inside the planner still requests physical
source captures, so planning evidence does not become inaccessible after it
is hidden from Data. A previously independent survey is not reclassified just
because somebody later compares it offline.
Live admission, registration thresholds, scanner commands and vehicle authority are unchanged. The older offline recorded-comparison solver still admits short references only; its existing constraint is now explained next to its disabled action instead of silently disabling the full-ring form. This task does not claim to upgrade that solver to route-wide offline relocalization.
Acceptance
- Focused Python regression suite: 135 passed (capture catalog, drafts, live planning, session store/API and corrected session defaults).
- Frontend: architecture/targeted checks passed, typecheck passed, complete
test suite 887 passed, production build passed. Ruff and
git diff --checkpassed. - Canonical LaunchAgent restarted after the build. One backend remains on
127.0.0.1:8000; no temporary backend was started on 8765. - Startup backfilled 19 exact historical acquisition bindings. The current
standalone catalog contains five independent recordings, including
JA-STROITEL-SUN-RING, and excludes the planning captures. The planner still lists 22 projects, including the latest unsuccessful ring study. - Browser acceptance used the existing application tab after reload. Data and the reference selector both showed the five independent recordings; no second type dropdown was introduced. The planning history retained the latest pass and previous studies.
- A new unsaved form selected the corrected ring and showed
Вся запись · 579.98 м · 5 182 положений. With a name supplied, launch was enabled. Re-selecting that same recording retained the full route and enabled action. Normal and expanded settings, scrolling to the action, and Escape close were checked. Browser error logs were empty. - The temporary form name was cleared without saving or starting a pass. The corrected ring preview remains open. No scanner command, new acquisition, registration run or historical-report rewrite was performed during QA.
These checks validate form/catalog repair and full-reference admission. They do not claim a successful new field localization at the previously failed location; that remains a short operator-controlled seam test.